0
我從同一個數據庫連接4個表。我的查詢正在返回我之後的數據,但也爲某些記錄返回多行。我只想要爲每個WKO_WorkOrderID使用最新的LastReportedHrsDate。有人可以幫我用正確的代碼來過濾嗎?SQL Server 2008篩選
代碼(我仍然很新的SQL ..):
SELECT dbo.PLT.PLT_ItemID, SUM(dbo.PLD.PLD_IssueQty) AS Issued, dbo.WKO.WKO_WorkOrderID, dbo.WKO.WKO_RequiredQty, dbo.WKO.WKO_CompleteQty,
dbo.WKO.WKO_RequiredQty - dbo.WKO.WKO_CompleteQty AS openbalance, dbo.PLT.PLT_QtyPerAssy,
(dbo.WKO.WKO_CompleteQty * dbo.PLT.PLT_QtyPerAssy - SUM(dbo.PLD.PLD_IssueQty)) * - 1 AS WIP, dbo.WKO.WKO_ItemID, dbo.WOO.WOO_StatusCode,
dbo.WOO.WOO_LastReportedHrsDate, dbo.WOO.WOO_WorkCenterID
FROM dbo.PLT INNER JOIN
dbo.PLD ON dbo.PLT.PLT_RecordID = dbo.PLD.PLD_PLT_RecordID INNER JOIN
dbo.WKO ON dbo.PLT.PLT_WorkOrderID = dbo.WKO.WKO_WorkOrderID LEFT OUTER JOIN
dbo.WOO ON dbo.PLT.PLT_WorkOrderID = dbo.WOO.WOO_WorkOrderID
WHERE (dbo.WKO.WKO_StatusCode = N'Released') AND (dbo.PLT.PLT_ItemID = '9005-20-1794')
GROUP BY dbo.PLT.PLT_ItemID, dbo.WKO.WKO_WorkOrderID, dbo.WKO.WKO_RequiredQty, dbo.WKO.WKO_CompleteQty, dbo.PLT.PLT_QtyPerAssy, dbo.WKO.WKO_ItemID,
dbo.WOO.WOO_StatusCode, dbo.WOO.WOO_LastReportedHrsDate, dbo.WOO.WOO_WorkCenterID
HAVING (SUM(dbo.PLD.PLD_IssueQty) = dbo.WKO.WKO_RequiredQty * dbo.PLT.PLT_QtyPerAssy) AND (dbo.WOO.WOO_LastReportedHrsDate IS NOT NULL) AND
(dbo.WOO.WOO_StatusCode IS NOT NULL)
ORDER BY dbo.WKO.WKO_WorkOrderID
不能發表我的結果的PIC
謝謝你你的幫助!它返回一個錯誤:消息8120,級別16,狀態1,行4 列'dbo.WOO.WOO_LastReportedHrsDate'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。當我將該列添加到Group By子句時,它將返回相同的重複記錄。 – jballard81
由於我們試圖獲取WOO_LastReportedHrsDate列的最大值,因此它不需要在group by中。我編輯了我的查詢,請立即嘗試。 – Sonam
肯定會更近一步,但會返回多個WorkerOrders。我不太確定爲什麼它仍然返回多個,當查詢指定MAX時。這裏是在我的公共保管箱文件夾中的.XLS結果:https://dl.dropboxusercontent.com/u/77130984/results.xlsx – jballard81