这是我的表格的查询
select Docno, quantity
from ORDR
它给出了像这样的输出
I330029 1
I330029 23
I330029 32
I330061 2
I330061 2
I330061 2
I330061 12
I330061 2
I330061 3
I330061 3
I330191 2
但是我需要这样的输出如果doc没有重复第一个值是“1”其他“0”......
像这样:
I330029 1
I330029 0
I330029 0
I330061 1
I330061 0
I330061 0
I330061 0
I330061 0
I330061 0
I330061 0
I330191 1
答案 0 :(得分:2)
您可以对此使用ROW_NUMBER()
。它的作用是在每个组中创建一个序列号。外部语句测试生成的数字是否等于1
,如果是,它将为其赋值1
,另一个为0
。
SELECT DocNo,
CASE WHEN rn = 1 THEN 1 ELSE 0 END qty
FROM
(
SELECT DocNo, Quantity,
ROW_NUMBER() OVER (PARTITION BY DocNO ORDER BY Quantity) rn
FROM ordr
) a
ORDER BY DocNo, qty DESC