【问题标题】:Calculation error in SELECT statementSELECT 语句中的计算错误
【发布时间】:2013-03-20 09:39:07
【问题描述】:

我有一个 SQL 我想在 DatasetAdapter 中创建它可以工作到某个点,但我无法弄清楚最后一点是否工作。

我有一个包含以下字段的表(MainTable):ID 名称图像区域平均值

我要计算ABS(Area-?) AS Cal1, ABS(Mean-?) AS Cal2 , Cal1+Cal2 As Cal3

SELECT 
ID, Image, Name, Area, Mean, ABS(Area - ?) AS cal1, ABS(Mean - ?) AS cal2, Cal1+Cal2 AS cal3
FROM  MainTable

然后我想得到 Cal3 的最大值

SELECT        MAX(cal3) AS maxofcal3
FROM          
  (SELECT        ID, Image, Name, Area, Mean, ABS(Area - ?) AS cal1, ABS(Mean - ?) AS cal2, derivedtbl_1.cal1 + derivedtbl_1.cal2 AS cal3
FROM            MainTable) 
derivedtbl_1

到目前为止,它给了我 cal3 的最大值。

问题: 我想进行另一个计算(Cal3/maxofcal3)。我想不通。我尝试了下面的代码,但出现了错误:

SELECT        MAX(Cal3) AS maxofCal3, Cal3 / MaxofCal3 AS Norm
FROM            (SELECT        ID, Image, Name, Area, Mean, ABS(Area - ?) AS cal1, ABS(Mean - ?) AS cal2, derivedtbl_1.cal1 + derivedtbl_1.cal2 AS cal3
                                                    derivedtbl_1.Cal1 + derivedtbl_1.Cal2 AS Cal3
                          FROM            MainTable) derivedtbl_1
GROUP BY Cal3 / MaxofCal3.

【问题讨论】:

    标签: asp.net sql vb.net visual-studio-2010


    【解决方案1】:

    仅按 Cal4 分组,而不是按 Cal4 / MaxofCal4

    查看以下示例以了解如何使您的代码正常工作:

    CREATE TABLE #SampleTable (ID int, Image nvarchar(10), Name nvarchar(10), Area int, Mean int )
    
    
    SELECT MAX(Cal3) AS maxofCal3, Cal4 / MAX(Cal3) AS Norm
    FROM (
    SELECT ID, Image, Name, Area, Mean, ABS(Area - 1) AS cal1, ABS(Mean - 1) AS cal2, ABS(Area - 1) + ABS(Area - 1) AS cal3, ABS(Area - 1) + ABS(Area - 1) AS Cal4 FROM #SampleTable
    ) derivedtbl_1 
    GROUP BY Cal4
    
    
    DROP TABLE #SampleTable
    

    【讨论】:

      猜你喜欢
      • 2013-04-25
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多