请教union后如何对结果分类求和,求一个SQL查询语句的写法

qinghuallt 2014-04-29 11:18:33
刚才贴子结了重新发。
表有哪下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
求教最终结果的写法
...全文
344 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinghuallt 2014-04-29
  • 打赏
  • 举报
回复
引用 1 楼 hwhmh2010 的回复:
select [类型],sum([数量]) from TB group by [类型]
表TB是你union之后得到的表
正解,谢谢!
修改一下昵称 2014-04-29
  • 打赏
  • 举报
回复

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 行受影响)
*/
山寨DBA 2014-04-29
  • 打赏
  • 举报
回复
select [类型],sum([数量]) from TB group by [类型]
表TB是你union之后得到的表
山寨DBA 2014-04-29
  • 打赏
  • 举报
回复
引用 3 楼 qinghuallt 的回复:
[quote=引用 1 楼 hwhmh2010 的回复:]
select [类型],sum([数量]) from TB group by [类型]
表TB是你union之后得到的表
正解,谢谢![/quote]

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧