首页 新闻 会员 周边 捐助

求一条SQL连接查询并统计的语句

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

三个表T1、T2、T3,表1表示设备所属机构信息,t2表示设备采集数据实时信息, t3表示设备状态信息。

T1: 设备f1、f2属于A局,f3属于B局

F_ID,    owner

f1         'A局'

f2         'A局'

f3         'B局'

T2: 设备 f1、f2、f3采集的实时数据均在T2表中存储,顺序和时间均可以不用理会

F_ID  ,   Time  ,                 Value

f1         '2014-02-14'         100

f2         '2014-02-15'         200

f3         '2014-02-15'         200

f1         '2014-02-15'         100

f2         '2014-02-16'         200

f3         '2014-02-17'         300

f1         '2014-02-17'         100

T3表:表示设备的安装标志,如f1是A局中的新装设备,f2是A局中的既有设备,B局中则只有既有设备f3,如下:

F_ID  ,   FALG

f1         '新装'

f2         '既有'

f3         '既有'

现在要根据机构统计各机构既有、新装设备指定时间段(如14号到17号)各自采集的数据的数据综合,输出要求如下:

机构(owner),       新装总量(sum(value)),  既有总量(sum(value))

A局                          300                                400

B局                          null                                 500

想了很久不知道怎么写,有一气呵成的么?谢谢

摩根鱼的主页 摩根鱼 | 初学一级 | 园豆:19
提问于:2014-02-08 16:59
< >
分享
所有回答(3)
0

先sum再行转列,使用关键字pivot

webaspx | 园豆:1973 (小虾三级) | 2014-02-08 17:33

看看这个链接:http://www.cnblogs.com/peaceli/archive/2009/09/08/1561113.html

支持(0) 反对(0) webaspx | 园豆:1973 (小虾三级) | 2014-02-08 18:05
0

select a.owner,sum(case when c.flag='新装' then value else 0 end) as 新装总量,sum(case when c.flag='既有' then value else 0 end) as 既有总量 from T1 a ,T2 b,T3 c where a.f_id=b.f_id and a.f_id = c.f_id group by a.owner    

闫怡飞 | 园豆:106 (初学一级) | 2014-02-12 11:39
0
select owner as 机构, 
sum(case when FALG='新装' then value else 0 end) as 新装总量,
sum(case when FALG='既有' then value else 0 end) as 既有总量
from T1 
join T2 on T1.F_ID=T2.F_ID 
Join T3 on T1.F_ID=T3.F_ID
where Time between '2014-2-14' and '2014-2-17' 
group by owner 

你T2中用的是flag吧,拼错了? 
+小马哥++ | 园豆:906 (小虾三级) | 2014-02-12 16:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册