需要SQL查询输出是这样的

时间:2013-09-12 09:19:22

标签: sql sql-server-2005

这是我的表格的查询

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

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