Sql 在计算中使用聚合函数的结果
我需要在计算中使用聚合函数的结果。假设我需要使用MAX函数并将其添加到另一个字段 我发现的一种方法是使用派生表:Sql 在计算中使用聚合函数的结果,sql,sql-server,Sql,Sql Server,我需要在计算中使用聚合函数的结果。假设我需要使用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 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.在SQL Server 2005+中,您可以使用()上的
这将使用子选择而不是直接派生的表
select TableA.Col2 + (select max(col1) from tablea t2 where t2.id = tablea.id group by t2.id)
from TableA
他不想对每个ID使用最大值,而是使用总体(imho)。@TimSchmelter真的吗?),但他使用的是一个派生表,其中他通过ID
连接。无论如何,这很容易通过删除分区来解决,只需离开MAX(Col1)OVER()
@TimSchmelter我想那不是你,这更像是一个重复的问题:-)@Lamak。我没有投反对票。但我也没有投票。请你用()
替换(按id划分)
,这样它是正确的,可以被提升吗?@GordonLinoff如果我认为这是op想要的,我会的。但是由于问题是通过ID
连接他的派生表,我假设这就是他/她想要的。在进一步澄清之前,我不会修改我的答案
select TableA.Col2 + (select max(col1) from tablea t2 where t2.id = tablea.id group by t2.id)
from TableA