1

我从 4 个不同的表中提取这些数据。正在返回我想要的信息,但是它会根据项目经历的 WorkCenterID 的数量而重复。我希望它只返回最大的工作中心 ID。

这是代码:

SELECT      PLT.PLT_ItemID
        ,   SUM(PLD.PLD_IssueQty) AS Issued
        ,   WKO.WKO_WorkOrderID
        ,   WKO.WKO_RequiredQty
        ,   WKO.WKO_CompleteQty
        ,   WKO.WKO_RequiredQty - WKO.WKO_CompleteQty AS openbalance
        ,   PLT.PLT_QtyPerAssy
        ,   (WKO.WKO_CompleteQty * PLT.PLT_QtyPerAssy - SUM(PLD.PLD_IssueQty)) * - 1 AS WIP
        ,   WKO.WKO_ItemID
        ,   WKO.WKO_StatusCode
        ,   WKO.WKO_LastWorkDate
        ,   WOO.WOO_WorkCenterID
FROM        PLT
                INNER JOIN PLD ON PLT.PLT_RecordID = PLD.PLD_PLT_RecordID
                INNER JOIN WKO ON PLT.PLT_WorkOrderID = WKO.WKO_WorkOrderID
                LEFT OUTER JOIN WOO ON PLT.PLT_WorkOrderID = WOO.WOO_WorkOrderID
WHERE       (WKO.WKO_StatusCode = N'Released')
        AND (PLT.PLT_ItemID = '1700-0535501-01')
GROUP BY    PLT.PLT_ItemID
        ,   WKO.WKO_WorkOrderID
        ,   WKO.WKO_RequiredQty
        ,   WKO.WKO_CompleteQty
        ,   PLT.PLT_QtyPerAssy
        ,   WKO.WKO_ItemID
        ,   WKO.WKO_LastWorkDate
        ,   WOO.WOO_WorkCenterID
        ,   WKO.WKO_StatusCode
HAVING      (SUM(PLD.PLD_IssueQty) = WKO.WKO_RequiredQty * PLT.PLT_QtyPerAssy)
ORDER BY    WKO.WKO_WorkOrderID

结果如下:

PLT_ItemID  Issued  WKO_WorkOrderID WKO_RequiredQty WKO_CompleteQty openbalance PLT_QtyPerAssy  WIP WKO_ItemID  WKO_StatusCode  WKO_LastWorkDate    WOO_WorkCenterID
1700-0535501-01 10  WO43620 10  10  0   1   0   9121-VA2-M  Released    2011-10-17 00:00:00.000 1010
1700-0535501-01 10  WO43620 10  10  0   1   0   9121-VA2-M  Released    2011-10-17 00:00:00.000 110
1700-0535501-01 10  WO43620 10  10  0   1   0   9121-VA2-M  Released    2011-10-17 00:00:00.000 810
1700-0535501-01 2   WO53259 2   2   0   1   0   9120-DE45R-M    Released    2012-03-05 00:00:00.000 110
1700-0535501-01 2   WO53259 2   2   0   1   0   9120-DE45R-M    Released    2012-03-05 00:00:00.000 810
1700-0535501-01 6   WO53697 6   6   0   1   0   9120-DE45-M Released    2012-03-30 00:00:00.000 110
1700-0535501-01 6   WO53697 6   6   0   1   0   9120-DE45-M Released    2012-03-30 00:00:00.000 810
1700-0535501-01 5   WO86275 5   0   5   1   5   9121-VA2-M  Released    2013-10-18 00:00:00.000 110
4

1 回答 1

0

您可以使用 ROW_NUMBER() 函数。像这样:

WITH a AS (    
    SELECT ROW_NUMBER() OVER(PARTITON BY WKO.WKO_WorkOrderID ORDER BY WKO.WKO_WorkOrderID) AS RowNo     
        ,   PLT.PLT_ItemID
        ,   SUM(PLD.PLD_IssueQty) AS Issued
        ,   WKO.WKO_WorkOrderID
        ,   WKO.WKO_RequiredQty
        ,   WKO.WKO_CompleteQty
        ,   WKO.WKO_RequiredQty - WKO.WKO_CompleteQty AS openbalance
        ,   PLT.PLT_QtyPerAssy
        ,   (WKO.WKO_CompleteQty * PLT.PLT_QtyPerAssy - SUM(PLD.PLD_IssueQty)) * - 1 AS WIP
        ,   WKO.WKO_ItemID
        ,   WKO.WKO_StatusCode
        ,   WKO.WKO_LastWorkDate
        ,   WOO.WOO_WorkCenterID
FROM        PLT
                INNER JOIN PLD ON PLT.PLT_RecordID = PLD.PLD_PLT_RecordID
                INNER JOIN WKO ON PLT.PLT_WorkOrderID = WKO.WKO_WorkOrderID
                LEFT OUTER JOIN WOO ON PLT.PLT_WorkOrderID = WOO.WOO_WorkOrderID
WHERE       (WKO.WKO_StatusCode = N'Released')
        AND (PLT.PLT_ItemID = '1700-0535501-01')
GROUP BY    PLT.PLT_ItemID
        ,   WKO.WKO_WorkOrderID
        ,   WKO.WKO_RequiredQty
        ,   WKO.WKO_CompleteQty
        ,   PLT.PLT_QtyPerAssy
        ,   WKO.WKO_ItemID
        ,   WKO.WKO_LastWorkDate
        ,   WOO.WOO_WorkCenterID
        ,   WKO.WKO_StatusCode
HAVING      (SUM(PLD.PLD_IssueQty) = WKO.WKO_RequiredQty * PLT.PLT_QtyPerAssy)
)

SELECT * FROM a WHERE a.RowNo = 1

当然,只选择您喜欢实际返回的字段...... :)

于 2013-10-21T17:39:54.550 回答