2013-03-20 8 views
1

У меня есть SQL, который я пытаюсь создать в DatasetAdapter, он работает до определенного момента, но я не могу вычислить, чтобы последний бит работал.Ошибка вычисления в инструкции SELECT

У меня есть таблица (MainTable) со следующими полями: ID Название изображения Площадь Mean

Я хочу расчета 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. 
+0

Какая ошибка? –

ответ

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