[英]SQL Server row_number
我在使用別rownumber
創建自定義行號時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
來計算一行的遞增順序。 我嘗試了以下查詢:
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
試試這個
;WITH LiksCounts
AS
(
SELECT Id,
(SELECT COUNT(*) AS Expr1
FROM dbo.CustomerLikeQuestion
WHERE (QuestionId = q.Id)) AS LikeCount
FROM dbo.Question AS q
GROUP BY Id
)
SELECT TOP(100) *, row_number() over (order by likecount) as RowNum
fROM LiksCounts
ORDER BY RowNum ASC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.