1

这是我的表的查询

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

但是如果文档没有重复第一个值是“1”其他“0”,我需要这样的输出......

像这样:

I330029 1
I330029 0
I330029 0
I330061 1
I330061 0
I330061 0
I330061 0
I330061 0
I330061 0
I330061 0
I330191 1
4

1 回答 1

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
于 2013-09-12T09:22:06.423 回答