rownumber
エイリアス列を使用してカスタムを作成する際に問題があります。サンプルデータを次に示します。
表question
:
id title
-- --------
1 xx
2 xxx
..
表customerLikeQuestion
:
Id QuestionId CustomerId
---------------------------
1 20 xx
2 100 xx
xx
クエリ:
SELECT q.Id,
(SELECT COUNT(*)
FROM dbo.CustomerLikeQuestion
WHERE (QuestionId = q.Id)) AS LikeCount
FROM dbo.Question AS q
ORDER BY likecount DESC
前のクエリは次を示しています。
id LikeCount
2136 6
2138 5
2150 5
rownumber
ここで、行の増分順序をカウントするためにa を入れたいと思います。次のクエリを試しました。
SELECT TOP (100) PERCENT Id,
(SELECT COUNT(*) AS Expr1
FROM dbo.CustomerLikeQuestion
WHERE (QuestionId = q.Id)) AS LikeCount,
row_number() over (order by likecount) as RowNum
FROM dbo.Question AS q
ORDER BY likecount DESC
しかし、それは私に次のエラーを与えます:
Likecount 列が無効です。
エイリアスでは機能しないことはわかっていOver()
ますが、CTEまたはサブクエリを使用してこの問題を回避するにはどうすればよいですか。まだアイデアが思い浮かびません。助けてください。
正しい結果は次のようになります。
id likecount, rownum
----------------------
xx 6 1
xx 5 2
xx 4 3
.. 0 xx