2015-06-09 40 views
0

如果我有下面的示例表(ORDER BY ID)墊數據庫出與NULL標準

ID Date   Type 
-- ----   ---- 
1  01/01/2000 A 
2  22/04/1995 A 
2  14/02/2001 B 

在這裏您可以立即看到ID=1沒有一個Type=B,但ID=2一樣。我想要做的,如果填寫一行顯示此:

ID Date   Type 
-- ----   ---- 
1  01/01/2000 A 
1  NULL   B 
2  22/04/1995 A 
2  14/02/2001 B 

那裏可能有100種不同類型的公司,(因此可能需要最終每人插入100的行,如果他們沒有100的類型! )

有沒有一個通用的解決方案來做到這一點?

我可以外連接到自己的表,並這樣做嗎?

回答

2

你可以用一個cross join這樣做產生的所有行和left join得到實際的數據值:

select i.id, s.date, t.type 
from (select distinct id from sample) i cross join 
    (select distinct type from sample) t left join 
    sample s 
    on s.id = i.id and 
     s.type = t.type;