我有一个表,看起来像这样,让我们称这个表B
。交叉连接两个表
id boardid schoolid subject cnt1 cnt2 cnt3 ....
=================================================================
1 20 21 f
2 20 21 r
3 20 21 w
4 20 21 m
5 20 30 r
6 20 30 w
7 20 30 m
假设计数只是整数。请注意0没有subject = f
。同样,对于大多数学校而言,存在一些dosnt。您可能有刚刚r, w
一个schoolid
或一些只是r, m, f
..
所以我想要做的是为每个学校4个一致行,那dosnt行存在我想虚值。我想创建一个辅助表
drop table #A
Select * into #A FROM
(
select [subject_s] = 'r', orderNo = 1
union all
select [subject_s] = 'w', orderNo = 2
union all
select [subject_s] = 'm', orderNo = 3
union all
select [subject_s] = 'f', orderNo = 4
) z
并做了一些加入他们,但我没有得到的地方。我尝试了内部连接,留下了外部连接,交叉连接,一切。我甚至试图制作笛卡尔产品。我认为我的笛卡尔产品混乱了,因为我有orderno
,所以它在主表中每行产生16行。实际上输入这个,我意识到如果我删除orderno
,应用笛卡尔产品,然后在后面添加orderno,它可能会工作,但我有兴趣看看你们能想出什么。我很难过。
最终结果
id boardid schoolid subject cnt1 cnt2 cnt3 ....
=================================================================
1 20 21 r
2 20 21 w
3 20 21 m
4 20 21 f
5 20 30 r
6 20 30 w
7 20 30 m
7 20 30 f
你有一张桌子,所有科目?你如何确定每个学校需要出现的所有科目? –
您使用的是什么RDBMS?为什么最终结果的最后一行的id是7? – Lamak
Typo,id是一个自动生成的数字。并且我创建了一个临时表将所有我的主题(只有四个) – masfenix