2結合に基づいてオーダー内で kind os sub オーダーを実行しようとしています。
SELECT
w.*
FROM
[dbo].[Scores] AS w
JOIN @ScoresTable AS s on s.AreaId = w.AreaId
WHERE
[Id] = @Id
ORDER BY
w.Score -- this is where the problem is
ScoresTable
は特定の順序を持つテーブル変数であるため、w から選択したデータは AreaId の順序に基づいています。
私がやろうとしているのは、これらの結果を列に基づいて並べ替えることですが、それは句w.Score
から(正しく)取得した順序を「上書き」しているようです。JOIN
に基づいて確立されScore
た順序を尊重しながら、順序を追加するにはどうすればよいですか?AreaId
JOIN
私は使用してみました:
ORDER BY
s.AreaId, w.Score
@ScoresTable.AreaId
JOIN は、次のような順序に基づいて正しい順序になります。
AreaId
5
3
6
ORDER BY 句を使用しないと、次のようになります (AreaId は必要に応じて並べ替えられます)。
Id Score WheId AreaId ContextId
25 25 2 5 1
26 50 2 5 2
27 2 2 5 3
28 10 2 5 4
29 5 2 5 5
39 1 2 3 11
40 30 2 6 12
ここでやりたいことは、Score 列でこれを並べ替えて、この結果セットを取得することです (AreaId は必要に応じて並べ替えられ、Score で並べ替えられます)。
Id Score WheId AreaId ContextId
27 2 2 5 3
29 5 2 5 5
28 10 2 5 4
25 25 2 5 1
26 50 2 5 2
39 1 2 3 11
40 30 2 6 12