2017-09-21 43 views
0

考慮以下表如何在一定量的數據的顯示特定列

Dept product name parts WO 32 aa abc 11 1234 32 aa aas 18 2213 32 bb asd 16 3424 32 aa adf 19 1255 32 cc asa 10 7567 32 aa agd 11 1233 31 ss fsf 23 3434

我有大約100部。在我的桌子上。我想要的是,當部門。是32,產品是「aa」,我只想顯示30個部件或更少。所以在這種情況下,aa的零件總數是59.因此,第一個aa產品有11個零件,下一個aa產品有18個零件,所以現在是29個。它現在應該忽略所有其他aa產品。

預期輸出

Dept product name parts WO 32 aa abc 11 1234 32 aa aas 18 2213 32 bb asd 16 3424 32 cc asa 10 7567 31 ss fsf 23 3434

欣賞提供任何幫助。

回答

0

假設WO是主鍵,然後使用SUM窗口函數來解決它。

SELECT yt.Dept, yt.product, yt.name, yt.parts, yt.WO 
FROM yourtable yt 
LEFT JOIN (
    SELECT *, sum(y.parts) over (partition by y.dept order by y.parts) tsum 
    FROM yourtable y 
    WHERE y.product = 'aa' 
) t ON yt.WO= t.WO 
WHERE yt.dept != 32 or (yt.dept = 32 and t.tsum < 59) or (yt.dept = 32 and yt.product != 'aa') 
0

你可以用SUM()窗函數,你必須通過部門和產品

結果劃分

dept product name parts wo 
32  aa  abc  11  1234 
32  aa  aas  18  2213 
32  bb  asd  16  3424 
32  cc  asa  10  7567 
31  ss  fsf  23  3434 
相關問題