我有一张表,例如
Item Pno Code qty
item1 pn1 1 3
item1 pn2 1 3
item1 pn2 2 2
item2 pn1 1 4
item2 pn3 1 5
item3 pn2 1 3
我想只选择具有不同Item,Code和qty的行。如果Item和代码相同,则应选择具有Max(qty)的行。
使用以下查询:
select x.item,pno,x.code,qty from @temp t join
(select item,code,max(qty) as quantity from @temp
group by item, code) x on t.item = x.item and t.code = x.code and t.qty = x.quantity
order by item,pno
我明白了:
item1 pn1 1 3
item1 pn2 1 3
item1 pn2 2 2
item2 pn3 1 5
item3 pn2 1 3
但我真正想要的是根据(item,code,qty)选择不同的行
item1 pn1 1 3
item1 pn2 2 2
item2 pn3 1 5
item3 pn2 1 3
无论Pno是什么,我如何根据(项目,代码,数量)清楚地选择行?
答案 0 :(得分:2)
;WITH CTE AS (
select *
,ROW_NUMBER() OVER (PARTITION BY item,pno,code ORDER BY qty DESC)rn
from @temp)
SELECT item,pno,code, qty
FROM CTE
WHERE rn = 1