获得最大值的总和而不是最大总和

时间:2014-06-06 16:45:47

标签: sql sql-server tsql sum max

我实际上选择了总和值的最大值。

但我需要反过来,我的意思是最大值之和

它的正确T-SQL语句是什么?

PropA       PropB       Max_PropAorB
10          11          11      
12          11          12
12          11          12
10          11          11
12          11          12

Sum(56)     Sum(55)     Sum(58)

我实际上是: 56

但我希望得到 58

SELECT
(SELECT sum(Max_PropAorB) FROM (VALUES  
(max( PropA )), (max( PropB))) AS value(Max_PropAorB)) as MyValue
FROM MyTable

2 个答案:

答案 0 :(得分:2)

SUM(CASE WHEN PropA > PropB THEN PropA ELSE PropB END)

如果PropA和PropB是复杂的内部选择,你可以将它们写成CR​​OSS APPLYs,这样你就可以用别名来引用它们,即:

SELECT
  SUM(CASE WHEN PropA > PropB THEN PropA ELSE PropB END)
FROM [...]
CROSS APPLY (SELECT [...] ) a(PropA)
CROSS APPLY (SELECT [...] ) b(PropB)

答案 1 :(得分:1)

SELECT SUM(x.maxi)
FROM (
    SELECT (
            SELECT Max(v)
            FROM (
                VALUES (propa)
                    ,(propb)
                ) AS value(v)
            ) maxi
    FROM Mytable
    ) x