1
2列にランクを付けようとしています。両方の列は数値で、1つはX座標を表し、もう1つはY座標を表します。次のようにSQL Server - 高密度/ランクで希望の結果が得られません
マイセレクトステートメントがある:
SELECT
Dense_Rank() over (Partition by X,uniqueid Order by Y ASC) as Y_Rank,
Dense_Rank() over (Partition by Y,uniqueid Order by X ASC) as X_Rank
,[uniqueid]
,[X]
,[Y]
FROM xxxx.xxxxx
上記のステートメントは、連結されたときのx/y座標を生成することである考え。しかし、私の結果セットは "ユニークな"座標を生成していないか、2つの行が同じXを持ち、異なるY値を持つ場合、X = 1、Y = 1ではなく、両方の行でX = 1、Y = 1になります。& X = 1 、Y = 2である。
私の最初の質問は、なぜこれが起こっているのか、何が間違っているのかです.2番目にrank()/ Dense_Rank()は10進数を超えて見えません。
私は、だから私は私のロジックに欠陥を発見した山車
+--------+--------+-----+----+--------------------------------------+------------------+
| X_Rank | Y_Rank | X | Y | uniqueid | Slot_Side |
+--------+--------+-----+----+--------------------------------------+------------------+
| 1 | 1 | 29 | 4 | 00000000-0000-0000-0000-fffff27fdf27 | 1 |
| 1 | 2 | 29 | 45 | 00000000-0000-0000-0000-fffff27fdf27 | 1 |
| 1 | 1 | 52 | 6 | 00000000-0000-0000-0000-fffff27fdf2d | 1 |
| 2 | 1 | 236 | 6 | 00000000-0000-0000-0000-fffff27fdf2d | 1 |
| 1 | 1 | 33 | 45 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 1 | 1 | 5 | 3 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 2 | 1 | 55 | 3 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 2 | 1 | 83 | 45 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 3 | 1 | 133 | 45 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 3 | 1 | 105 | 3 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 4 | 1 | 155 | 3 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 4 | 1 | 183 | 45 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 5 | 1 | 233 | 45 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 5 | 1 | 205 | 3 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 6 | 1 | 255 | 3 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 6 | 1 | 283 | 45 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 7 | 1 | 333 | 45 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 7 | 1 | 305 | 3 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 8 | 1 | 355 | 3 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 8 | 1 | 383 | 45 | 00000000-0000-0000-0000-fffff27fe073 | 0 |
| 1 | 1 | 5 | 2 | 00000000-0000-0000-0000-fffff27fe074 | 0 |
| 2 | 1 | 41 | 2 | 00000000-0000-0000-0000-fffff27fe074 | 0 |
| 3 | 1 | 77 | 2 | 00000000-0000-0000-0000-fffff27fe074 | 0 |
| 4 | 1 | 113 | 2 | 00000000-0000-0000-0000-fffff27fe074 | 0 |
| 5 | 1 | 149 | 2 | 00000000-0000-0000-0000-fffff27fe074 | 0 |
| 6 | 1 | 185 | 2 | 00000000-0000-0000-0000-fffff27fe074 | 0 |
| 7 | 1 | 221 | 2 | 00000000-0000-0000-0000-fffff27fe074 | 0 |
| 8 | 1 | 257 | 2 | 00000000-0000-0000-0000-fffff27fe074 | 0 |
| 9 | 1 | 293 | 2 | 00000000-0000-0000-0000-fffff27fe074 | 0 |
+--------+--------+-----+----+--------------------------------------+------------------+
"uniqueid"が本当にユニークな場合、ユニークな値でパーティショニングしているため、DENSE_RANK()のすべての値に対して1以外の値を取得するとは思いません... – ZLK
@ZLK良い点、あなたが描いている意味ではユニークではありません。同じuniqueidを持つ複数の行があります(この値は各行の親を表します)。私はそれが必要な行をグループ化し、各uniqueidサブセットのランキングを行うので、その価値が必要です。希望は意味をなさない。 – Cjust689
あなたが与えた例とは異なる結果が期待されているとは本当に理解できません。これらのX-Y座標はすべてユニークに見えます。それとも、それは生産するべきだと思っているのですか?そうしていないのですか? – ZLK