[英]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.Code
和FSB_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
取出Code
和Date
:
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.