如何在一定量的数据的显示特定列
问题描述:
考虑以下表如何在一定量的数据的显示特定列
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
欣赏提供任何帮助。
答
假设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')
答
你可以用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