選擇列表中的列無效,因為該列沒有包含在聚合函數或 GROUP BY 子句中


解決方案:指定 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子句指定次序。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM