我想对由列名确定的列求和,该列将作为诸如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
答案 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