Sqlite创建具有来自不同表的总数的视图

问题描述 投票:0回答:1

我有3个具有identique结构的表,如下dpt1_taks,dpt2_tasks和dpt3_tasks。这是每一个的结构(4列):

id | task_date | assigned | done
_________________________________
1  |01-11-2019 |     x    |  x
2  |01-11-2019 |     x    |     
3  |01-11-2019 |     x    |  x
1  |02-11-2019 |          |
1  |02-11-2019 |     x    |  x
1  |03-11-2019 |     x    |
1  |03-11-2019 |          |
1  |03-11-2019 |     x    |
1  |04-11-2019 |     x    |  x

如何创建一个sqlite视图,将每个表的每个日期的[[count分组如下:

DATE | dpt1_assigned | dpt1_done | dpt2_assigned | dpt2_done |dpt3_assigned | dpt3_done | _______________________________________________________________________________________________ 01-11-2019| 3 | 2 | 5 | 3 | 4 | 0 | 02-11-2019| 1 | 1 | 5 | 3 | 4 | 0 |
谢谢您的帮助和最诚挚的问候。
sqlite view count
1个回答
0
投票
每个表的结果必须分别计算,然后按日期合并:

with dates as ( select task_date from dpt1_taks union select task_date from dpt2_taks union select task_date from dpt3_taks ), cte1 as ( select task_date, coalesce(sum(assigned = 'x'), 0) dpt_assigned, coalesce(sum(done = 'x'), 0) dpt_done from dpt1_taks group by task_date ), cte2 as ( select task_date, coalesce(sum(assigned = 'x'), 0) dpt_assigned, coalesce(sum(done = 'x'), 0) dpt_done from dpt2_taks group by task_date ), cte3 as ( select task_date, coalesce(sum(assigned = 'x'), 0) dpt_assigned, coalesce(sum(done = 'x'), 0) dpt_done from dpt3_taks group by task_date ) select d.task_date, c1.dpt_assigned dpt_assigned1, c1.dpt_done dpt_done1, c2.dpt_assigned dpt_assigned2, c2.dpt_done dpt_done2, c3.dpt_assigned dpt_assigned3, c3.dpt_done dpt_done3 from dates d left join cte1 c1 on c1.task_date = d.task_date left join cte2 c2 on c2.task_date = d.task_date left join cte3 c3 on c3.task_date = d.task_date

请参见demo
© www.soinside.com 2019 - 2024. All rights reserved.