请问union后怎么对结果分类求和,SQL查询语句的写法
请教union后如何对结果分类求和,求一个SQL查询语句的写法
刚才贴子结了重新发。
表有哪下7列
ID 类型1 数量1 类型2 数量2 类型3 数量3
1 A 0.5 B 0.2 C 0.7
2 B 1.2 D 0.8 A 0.4
现用union all查询结果为如下
ID 类型 数量
1 A 0.5
1 B 0.2
1 C 0.7
2 B 1.2
2 D 0.8
2 A 0.4
我想要的最终结果为
类型 数量
A 0.9
B 1.4
C 0.7
D 0.8
求教最终结果的写法
------解决方案--------------------
------解决方案--------------------
刚才贴子结了重新发。
表有哪下7列
ID 类型1 数量1 类型2 数量2 类型3 数量3
1 A 0.5 B 0.2 C 0.7
2 B 1.2 D 0.8 A 0.4
现用union all查询结果为如下
ID 类型 数量
1 A 0.5
1 B 0.2
1 C 0.7
2 B 1.2
2 D 0.8
2 A 0.4
我想要的最终结果为
类型 数量
A 0.9
B 1.4
C 0.7
D 0.8
求教最终结果的写法
------解决方案--------------------
select [类型],sum([数量]) from TB group by [类型]表TB是你union之后得到的表
------解决方案--------------------
declare @t table(ID INT,[类型1] varchar(10),[数量1] numeric(18,1),[类型2] varchar(10),[数量2] numeric(18,1),[类型3] varchar(10),[数量3] numeric(18,1))
insert into @t
select 1,'A',0.5,'B',0.2,'C',0.7 union all
select 2,'B',1.2,'D',0.8,'A',0.4
SELECT UNP_T.[类型],
SUM(case when UNP_T.[Type]='类型1' then UNP_T.数量1
when UNP_T.[Type]='类型2' then UNP_T.数量2
when UNP_T.[Type]='类型3' then UNP_T.数量3
else null end) 数量
FROM @t T
UNPIVOT
(
[类型] FOR [Type] IN ([类型1],[类型2],[类型3])
) AS [UNP_T]
GROUP BY UNP_T.[类型]
/*
(2 行受影响)
类型 数量
---------- ---------------------------------------
A 0.9
B 1.4
C 0.7
D 0.8
(4 行受影响)
*/