2017-09-21 32 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 
相关问题