簡體   English   中英

SQL分組依據兩列

[英]SQL Group By two columns

只是試圖將選定的記錄按兩列分組

SELECT FSB_ProcessItems.InvId,
       FSB_ProcessItems.ItemId,
       FSB_Processes.Code,
       Sum(FSB_ProcessItems.Qty),
       FSB_Processes.Date

FROM FSB_ProcessItems 
     INNER JOIN FSB_ProcessStudents ON FSB_ProcessItems.ProStudentId = FSB_ProcessStudents.ProStudentId
     INNER JOIN FSB_Processes ON FSB_Processes.ProcessId =  FSB_ProcessStudents.ProcessId 


GROUP BY FSB_ProcessItems.InvId, FSB_ProcessItems.ItemId

我有錯誤:

在選擇列表中,列“”無效,因為列未包含在聚合函數或GROUP BY子句中。

FSB_Processes.CodeFSB_Processes.Date

在嘗試對記錄進行分組之前,已正確選擇了記錄,因此我在分組時遇到了問題

尋找解決方案,但運氣不佳,因為我不完全了解問題

所以我正在尋找一種解釋和解決方案。

您必須將所有沒有聚合函數的選定列放入group by子句

SELECT FSB_ProcessItems.InvId,
   FSB_ProcessItems.ItemId,
   FSB_Processes.Code,
   Sum(FSB_ProcessItems.Qty),
   FSB_Processes.Date

FROM FSB_ProcessItems 
 INNER JOIN FSB_ProcessStudents ON FSB_ProcessItems.ProStudentId =   FSB_ProcessStudents.ProStudentId
 INNER JOIN FSB_Processes ON FSB_Processes.ProcessId =  FSB_ProcessStudents.ProcessId 

GROUP BY FSB_ProcessItems.InvId, FSB_ProcessItems.ItemId, FSB_Processes.Date, FSB_Processes.Code

您需要決定想要什么。 按照書面規定,您應從SELECT取出CodeDate

SELECT pi.InvId, pi.ItemId, Sum(pi.Qty)
       -- p.Code, p.Date
FROM FSB_ProcessItems pi INNER JOIN
     FSB_ProcessStudents s
     ON pi.ProStudentId = s.ProStudentId INNER JOIN
     FSB_Processes p
     ON p.ProcessId =  s.ProcessId 
GROUP BY pi.InvId, pi.ItemId;

如果您要在代碼和/或日期的單獨行,則請在分組中加入min by GROUP BY

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM