Sqlite使用不同表中的总计创建视图
我有3个具有identique结构的表,如下是dpt1_任务、dpt2_任务和dpt3_任务。 这是每个(4列)的结构: 如何创建一个sqlite视图,将每个表的每个日期的计数分组如下:Sqlite使用不同表中的总计创建视图,sqlite,view,count,Sqlite,View,Count,我有3个具有identique结构的表,如下是dpt1_任务、dpt2_任务和dpt3_任务。 这是每个(4列)的结构: 如何创建一个sqlite视图,将每个表的每个日期的计数分组如下: DATE | dpt1_assigned | dpt1_done | dpt2_assigned | dpt2_done |dpt3_assigned | dpt3_done | _____________________________________________________________
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 |
提前感谢您的帮助和问候。每个表的结果必须单独计算,然后按日期合并:
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
请参阅。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