2

データを次のように持っているという要件があります

StageID         Department Number       UserEmail

732                60012                user1@testing.com
733                60012                user1@testing.com
734                60012                user1@testing.com
735                60012                user2@testing.com
736                60012                user2@testing.com
737                60013                user3@testing.com   
738                60013                user3@testing.com

このような出力を取得したい

StageID         Department Number       UserEmail       DRank

732              60012              user1@testing.com   1
733              60012              user1@testing.com   1
734              60012              user1@testing.com   1
735              60012              user2@testing.com   2
736              60012              user2@testing.com   2
737              60013              user3@testing.com   1
738              60013              user3@testing.com   1

レコードをランク​​付けするときに、 DepartmentNumberUserEmailの組み合わせを考慮したいと考えています。これを達成するためにパーティションでDENSE_RANK()を使用していますが、どういうわけか目的の出力を得ることができません。どこが間違っているのかわかりません。誰でもこれで私を助けてくれませんか

これは私が使用したクエリです

SELECT StageID, DepartmentNumber, UserEmail
        ,DENSE_RANK() OVER (PARTITION BY DepartmentNumber, UserEmail
         ORDER BY DepartmentNumber, UserEmail ASC) AS DRANK 
   FROM mytable 
4

1 に答える 1

5

これが必要だと思います( JWが提供するSQLFiddle):

SELECT StageID, DepartmentNumber, UserEmail
        ,DENSE_RANK() OVER (PARTITION BY DepartmentNumber
         ORDER BY UserEmail ASC) AS DRANK 
   FROM mytable 

PARTITION BYプロティップ - 句と句の両方で同じ列を使用することは決してありませんORDER BY

これは、私があなたの要件を理解した場合です。各部門の行を個別にランク付けし、列でランクを電子メールとして選択する必要があると思います。それがあなたの要件でない場合は、より明確にする必要があります

レコードをランク​​付けするときに と の組み合わせを考慮してDepartmentNumberほしい。UserEmail

于 2013-02-12T07:35:23.923 に答える