我有几列包含多个变量及其关联的值。我想堆叠变量列及其关联的值列进行求和。
每个变量(例如ABC)可能会或可能不会出现在每一列中。 10个变量/值列中可能会出现大约200个变量(及其关联的值)。我刚刚展示了3个变量/值对中的6个变量。
这是我的专栏:
Variable1 Value1 Variable2 Value2 Variable3 Value3
ABC 1 ABC 9 ABC 6
DEF 2 DEF 8 DEF 5
XYZ 3 XYZ 7 XYZ 4
KLM 4 KLM 6 KLM 3
TUV 5 TUV 2
GHI 1
这是我想要的输出:
VariableAll ValueAll
ABC 16
DEF 15
XYZ 14
KLM 13
TUV 7
GHI 1
任何能提供的指导将不胜感激。谢谢您的帮助!
答案 0 :(得分:0)
您需要3个独立的选择,每个列对一个,然后union all
将它们组合成单个结果。
declare @t table(Variable1 varchar(50), Value1 int, Variable2 varchar(50), Value2 int, Variable3 varchar(50), Value3 int)
insert into @t(Variable1, Value1, Variable2, Value2, Variable3, Value3) values
('ABC', 1, 'ABC', 9, 'ABC', 6),
('DEF', 2, 'DEF', 8, 'DEF', 5),
('XYZ', 3, 'XYZ', 7, 'XYZ', 4),
('KLM', 4, 'KLM', 6, 'KLM', 3),
('TUV', 5, null, null, 'TUV', 2),
( null, null, null, null, 'GHI', 1)
;with cte (Variable, [Value]) as (
select Variable1, Value1 from @t where Variable1 is not null
union all
select Variable2, Value2 from @t where Variable2 is not null
union all
select Variable3, Value3 from @t where Variable3 is not null
)
select Variable, SUM([Value]) as Total
from cte
group by Variable
order by Total desc