首页 新闻 会员 周边 捐助

SQL 分组条件聚合怎么实现?

0
悬赏园豆:10 [待解决问题]

我有图1实例样式的数据和表格。想得到图2的结果。不知道SQL语句该怎么写了,谢谢。

heqteyur的主页 heqteyur | 初学一级 | 园豆:192
提问于:2015-08-18 12:32
< >
分享
所有回答(4)
0

这种问题几百个人问了几千次了,没啥好方法,就是

select where

union select where 

group by 

sum

要不然就是在代码中进行变换,不在数据查询中实现,

通常问的人都是懂SQL,就是懒,否则写写也就出来了。

爱编程的大叔 | 园豆:30844 (高人七级) | 2015-08-18 12:51
0

如果是用储存过程 就把三个费用统计到三个临时表,再合并成一个表。

sql语句你可以分开三条语句写,再显示对应的结果。

或者  select distinct A.运单编号,(select sum(运费) from 表1 where 运单编号=A.运单编号 and 付款方式=1 ) as 费用1,
   (select sum(运费) from 表1 where 运单编号=A.运单编号 and 付款方式=2) as 费用2,
   (select sum(运费) from 表1 where 运单编号=A.运单编号 ) as 全部费用 from 表1 A

包子wxl | 园豆:186 (初学一级) | 2015-08-18 14:05
0

请使用PIVOT

SELECT 运单编号,[1] AS 付款方式1的运费合计,[2] AS 付款方式2的运费合计,[1]+[2] AS 全部运费合计
FROM(SELECT 运单编号,运费,付款方式 FROM test) T 
PIVOT(SUM(运费) FOR 付款方式 IN ([1],[2])) AS PVT
MrNice | 园豆:3468 (老鸟四级) | 2015-08-18 14:44
0

SELECT b,C, SUM(d) price INTO #t1 FROM dbo.T_price GROUP BY b,C
SELECT *,F1+F2 hj FROM (
SELECT B, ISNULL([1],0) F1,ISNULL([2],0) F2 FROM #t1 PIVOT (SUM(price) FOR C IN ([1],[2])) t) AS t1

lb1208 | 园豆:371 (菜鸟二级) | 2015-08-19 10:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册