正如上面所述,我试图将这个Row_Number()查询作为子句中的from子句:
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY CaseID) AS RowNum
FROM T.dbo.CompletedCase
) AS MyDerivedTable
WHERE MyDerivedTable.RowNum BETWEEN 0 AND 25
这是我试图将其置于
中的查询SELECT DISTINCT c.UserId, (u.FirstName + ' ' + u.LastName) AS [UserName], Count(c.UserId +c.CaseId+c.LineNumber) AS [CompletedCase]
FROM T.dbo.CompletedCase c join T.dbo.User u on c.UserId = u.UserID
WHERE c.PrintDateTime >= '2014-01-27 7:00' AND c.PrintDateTime <= '2014-01-27 17:00'
Group By u.FirstName, u.LastName, c.UserId
Order By [UserName]
我已经看到不同的人如何对他们应用类似的东西,但我不知道如何在from子句中应用它。如果你要解释一些答案,将不胜感激!如果有更好的方法从SELECT子句中执行此操作,那么我将尝试它。对我来说,放入FROM子句是有意义的,因为它是从中拉出行的地方。谢谢你的帮助。
答案 0 :(得分:1)
你应该可以做同样的事情(虽然我无法想象你想要完成的事情):
Select *
From (
SELECT DISTINCT ROW_NUMBER() Over(Order By c.UserId) rn, c.UserId, (u.FirstName + ' ' + u.LastName) AS [UserName], Count(c.UserId +c.CaseId+c.LineNumber) AS [CompletedCase]
FROM T.dbo.CompletedCase c join T.dbo.User u on c.UserId = u.UserID
WHERE c.PrintDateTime >= '2014-01-27 7:00' AND c.PrintDateTime <= '2014-01-27 17:00'
Group By u.FirstName, u.LastName, c.UserId
) x
Where x.rn Between 0 and 25
Order By [UserName]
我个人喜欢用CTE做这种事情:
;with cte as
(
SELECT DISTINCT ROW_NUMBER() Over(Order By c.UserId) rn
,c.UserId
,(u.FirstName + ' ' + u.LastName) AS [UserName]
,Count(c.UserId +c.CaseId+c.LineNumber) AS [CompletedCase]
FROM T.dbo.CompletedCase c
join T.dbo.User u
on c.UserId = u.UserID
WHERE c.PrintDateTime >= '2014-01-27 7:00' AND c.PrintDateTime <= '2014-01-27 17:00'
Group By u.FirstName, u.LastName, c.UserId
)
Select UserId
,UserName
,CompletedCase
From cte
Where rn Between 0 And 25
Order By [UserName]
但是,有点像你只想要前25行,所以为什么不呢:
SELECT DISTINCT Top 25, c.UserId, (u.FirstName + ' ' + u.LastName) AS [UserName], Count(c.UserId +c.CaseId+c.LineNumber) AS [CompletedCase]
FROM T.dbo.CompletedCase c join T.dbo.User u on c.UserId = u.UserID
WHERE c.PrintDateTime >= '2014-01-27 7:00' AND c.PrintDateTime <= '2014-01-27 17:00'
Group By u.FirstName, u.LastName, c.UserId
Order By [UserName]