Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在计算中使用聚合函数的结果_Sql_Sql Server - Fatal编程技术网

Sql 在计算中使用聚合函数的结果

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 有没有办法在一个

我需要在计算中使用聚合函数的结果。假设我需要使用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.

在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