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 に答える