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 | _____________________________________________________________

我有3个具有identique结构的表,如下是dpt1_任务、dpt2_任务和dpt3_任务。 这是每个(4列)的结构:

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

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