簡體   English   中英

SQL Server row_number

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM