2013-03-26 63 views
0

我需要在計算中使用聚合函數的結果。假設我需要使用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。

回答

2

在SQL Server 2005 +,你可以使用OVER()

SELECT MAX(Col1) OVER(PARTITION BY ID) MaxValue, 
     Col2 + MAX(Col1) OVER(PARTITION BY ID) 
FROM TableA 
+0

他不想使用的最大值爲每個ID,但整體(恕我直言) – 2013-03-26 14:41:43

+0

@TimSchmelter真的嗎?,但是他正在使用一個派生表,而他通過'ID'加入。無論如何,通過刪除「PARTITION BY」可以很容易地解決這個問題,並且只需保留MAX(Col1)OVER()' – Lamak 2013-03-26 14:46:59

+0

那麼downvote的原因是什麼? – Lamak 2013-03-26 14:58:18

0

這將使用子查詢,而不是徹底派生表的。

select TableA.Col2 + (select max(col1) from tablea t2 where t2.id = tablea.id group by t2.id) 
    from TableA