我有一個表,看起來像這樣,讓我們稱這個表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