【发布时间】:2018-08-01 16:07:04
【问题描述】:
SQL 表:
UserId ReportsRead
1 4
2 6
3 5
我想查询该表,以便得到以下信息:
UserId ReportsRead TotalReports
1 4 15
问题在于,因为我应用了 WHERE 子句,所以我得到的总和将与用户报告读取的结果相同。
SELECT UserId, ReportsRead, SUM(ReportsRead) AS TotalReports FROM MyTable WHERE UserId = 1
是否有一个内置函数可以让我这样做?我想完全避免子查询。
【问题讨论】:
-
您是否有理由要在此处避免子查询?您只选择一行,因此无论复杂程度如何,您运行的任何子查询都只会运行一次。
-
@ZLK 是的,“MyTable”实际上是一个相当长的子查询,我不想运行两次。我把它展示在这里作为我的桌子,试图让事情变得简单。
-
在这种情况下,您可能希望将答案中建议的
SUM() OVER()窗口函数的想法合并到您的长子查询中,这样您只需选择一个附加列,假设您只想在最后选择一列。
标签: sql sql-server