解決方案:指定 GROUP BY 時,選擇列表中任何非聚合表達式內的每個屬性名都應包含在GROUP BY列表中,或者GROUP BY表達式必須與選擇列表表達式完全匹配。
錯誤用法:
select top 1000 訂單ID,客戶ID,訂單號,實付金額,主訂單ID FROM [TRA].[dbo].[訂單]
group by 訂單ID
order by 訂單ID
報錯:
正確用法1:
select top 1000 訂單ID,min(客戶ID),min(訂單號),min(實付金額),min(主訂單ID) FROM [TRA].[dbo].[訂單]
group by 訂單ID
order by 訂單ID
正確用法2:
select top 1000 訂單ID,客戶ID,訂單號,實付金額,主訂單ID FROM [TRA].[dbo].[訂單] group by 訂單ID,客戶ID,訂單號,實付金額,主訂單ID order by 訂單ID
min最小值:在沒用group分組時,此刻整張表為一個組,min返回的是這一列中數據最小的數據,
使用group分組時,min返回的是所在組的最小數據.
使用Group By子句的時候,一定要記住下面的一些規則:
(1)不能Group By非標量基元類型的列,如不能Group By text,image或bit類型的列
(2)Select指定的每一列都應該出現在Group By子句中,除非對這一列使用了聚合函數;
(3)不能Group By在表中不存在的列;
(4)進行分組前可以使用Where子句消除不滿足條件的行;
(5)使用Group By子句返回的組沒有特定的順序,可以使用Order By子句指定次序。