我有一个表例如字段(a:int,b:int,c:int,d:int) 我正在写一个商店程序。此存储过程将给出一个字符串('a'或'b'或'c'或'd'),并应该在该列上给出总和。 我正在使用SQL Server 2005。
答案 0 :(得分:2)
您可以使用CASE表达式选择合适的列进行汇总
SELECT SUM(
CASE @col -- the param of the stored procedure
WHEN 'a' THEN col_a
WHEN 'b' THEN col_b
WHEN 'c' THEN col_c
ELSE col_d END) AS sum_of_column
FROM my_table
在过程中使用动态SQL的替代方法
DECLARE @sql AS VARCHAR(MAX)
SET @sql = 'SELECT SUM(' + @col +') FROM my_table'
EXEC (@sql)
答案 1 :(得分:1)
尝试重新设计数据库,这样就不会尝试对多个列实施相同的操作。仅仅因为SQL表类似于电子表格,这并不意味着您应该将其视为电子表格。
听起来你可能会进行某种形式的属性拆分 - 你有多个列代表相同的“类型”数据,当你应该有多行时,还有一个额外的列来区分这些值(例如,而不是有十二列代表一年中每个月的“值”,你应该有两列,存储月份和“价值”。