1

私は作成しようとしているSQLを持っていますが、DatasetAdapterそれは特定のポイントまで機能しますが、最後のビットを機能させることができません。

次のフィールドを持つテーブル (メインテーブル) があります: 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.
4

1 に答える 1

1

Cal4 / MaxofCal4 ではなく、Cal4 のみでグループ化

次の例を確認して、コードを機能させる方法を理解してください。

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-03-20T10:07:17.100 に答える