起因
主管想根据时间范围统计下各标段各桥梁部件的录入数量,这个任务就交给我吧…
表介绍
- qr_code_item_type:桥梁部件类型表,类型有桩基、承台、墩柱等
- qr_code_item1 :桥梁墩柱类部件信息表,关联表qr_code_item_type、qr_code_main
- qr_code_item2 :桥梁梁类部件信息表,关联表qr_code_item_type、qr_code_main
- qr_code_main:桥梁标段表
语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17SELECT itype.id,isnull(total, 0) total
FROM qr_code_item_type itype
LEFT JOIN (
SELECT item.item_type_id type,COUNT(*) total
FROM qr_code_item item
LEFT JOIN qr_code_main main ON item.qr_code_main_id = main.id
WHERE main.section = 2 AND isnull(item.update_time, item.create_time) BETWEEN '20180301' AND '20180801'
GROUP BY item.item_type_id
UNION ALL
SELECT item.item_type_id type, COUNT(*) total
FROM qr_code_item2 item
LEFT JOIN qr_code_main main ON item.qr_code_main_id = main.id
WHERE main.section = 2 AND isnull(item.update_time, item.create_time) BETWEEN '20180301' AND '20180801'
GROUP BY item.item_type_id
)
aa ON itype.id = aa.type
ORDER BY itype.id
ps:墩柱类、梁类虽都属于部件类,但具体信息差别较大,故分成两个表,所以统计的时候使用了联合查询