如何使用SQL添加自动虚拟行

问题描述

我的桌子上有以下物品:

ID  TYPE    ProjectID   Date    Rev
1   A   1   30-1-2010   500
2   B   1   28-02-2011  580
2   B   2   30-04-2011  540
2   B   3   03-04-2019  440

结果:

ID  TYPE    ProjectID   Date    Rev
1   A   1   30-1-2010   500
1   A   2   01-01-2000  0
1   A   3   01-01-2000  0
2   B   1   28-02-2011  580
2   B   2   30-04-2011  540
2   B   3   03-04-2019  440

我想编写一个SQL查询,其中每当输入“ A”类型时,应自动插入两行,分别是项目ID 2和3,以及认的日期和修订数据。

当前,我正在使用UNION函数手动添加此数据,但我想自动执行。 我不确定如何在sql中执行此操作。

解决方法

如果我理解正确:

select it.id,it.type,p.projectid,coalesce(t.date,'2000-01-01') as date,coalesce(t.rev,0) as rev
from  (select distinct id,type from t) it cross join
      (select distinct projectid from t) p left join
      t
      on t.id = it.id and t.type = it.type and t.projectid = p.projectid;

这将填写缺少的值,因此所有id / type组合都具有所有项目。