使用变量作为HAVING SUM(@variable)中使用的列名

时间:2018-08-13 01:56:57

标签: sql-server sum

我想对由列名确定的列求和,该列将作为诸如HAVING SUM(@variable)之类的变量传递进来

例如,我想传递HR列并求和,尽管我可能想用不同的列求和

DECLARE @column varchar(20) = 'HR'

SELECT 
    Batting.playerID,
    SUM(G)      as G,
    SUM(AB)     as AB,
    SUM(R)      as R,
    SUM(H)      as H,
    SUM([2B])   as '2B',
    SUM([3B])   as '3B',
    SUM(HR)     as HR,
    SUM(RBI)    as RBI,
    SUM(SB)     as SB,
    SUM(BB)     as BB,
    SUM(HBP)    as HBP

FROM Batting 

GROUP BY playerID
HAVING SUM(@column) > 600

1 个答案:

答案 0 :(得分:1)

这会将所选列返回为Val。不能更改列的名称,但可以得到结果:

DECLARE @column varchar(20) = 'HR'

select * from (
SELECT 
    Batting.playerID,
    sum(
        case 
            when @column='G' then G
            when @column='AB' then AB
            when @column='R' then R
            ... etc...
    end) as val
FROM Batting 
GROUP BY playerID
) q where val > 600