我需要在计算中使用聚合函数的结果。假设我需要使用MAX函数并将其添加到另一个字段中。
我发现的一种方法是使用派生表:
SELECT DerivedTable.MaxValue, TableA.Col2 + DerivedTable.MaxValue FROM (
SELECT ID, MAX(Col1) AS MaxValue FROM TableA
) As DerivedTable
INNER JOIN TableA ON DerivedTable.ID=TableA.ID
有没有办法在单个Select语句中执行此操作?
TIA。
答案 0 :(得分:2)
在SQL Server 2005+中,您可以使用OVER()
:
SELECT MAX(Col1) OVER(PARTITION BY ID) MaxValue,
Col2 + MAX(Col1) OVER(PARTITION BY ID)
FROM TableA
答案 1 :(得分:0)
这使用子选择而不是直接派生表。
select TableA.Col2 + (select max(col1) from tablea t2 where t2.id = tablea.id group by t2.id)
from TableA