2017-06-12 46 views
3

在連接具有一對多關係的兩個表中,我想要一個結果顯示多個表中的所有值,其中null值在一個表中。SQL中暗含的連接表中的空值

下面是一個例子:

tbl_Platform:PriKey = PlatformID

PlatformID PlatformDesc 
1 Application 
2 Cloud 
3 Storage 
4 Backup 

tbl_Missed:PriKey =客戶id +周+ PlatformID

CustomerID Week Missed  Platform ID 
49   1  2017-05-19 1 

輸出期望:

CustomerID Week Missed PlatformDesc 
49 1 2017-05-19 Application 
49 1 null Cloud 
49 1 null Storage 
49 1 null Backup 

我已經能夠使用交叉連接如下來最接近的:

SELECT   
    dbo.tbl_Missed.CustomerID, 
    dbo.tbl_Missed.Week, 
    dbo.tbl_Missed.Missed, 
    dbo.tbl_Platform.PlatformDesc 
FROM 
    dbo.tbl_Platform 
CROSS JOIN dbo.tbl_MissedSPT 

這給了我:

49 1 2017-05-19 Application 
49 1 2017-05-19 Cloud 
49 1 2017-05-19 Storage 
49 1 2017-05-19 Backup 

回答

3

看來,如果你想利用價值屬性missed如果在platformIDnull中存在匹配,則返回true。嘗試以下(希望沒有錯別字):

SELECT   
    dbo.tbl_Missed.CustomerID, 
    dbo.tbl_Missed.week, 
    CASE WHEN dbo.tbl_Missed.PlatformID = dbo.tbl_Platform.PlatformID 
       THEN dbo.tbl_Missed.missed 
       ELSE NULL 
    END as missed, 
    dbo.tbl_Platform.PlatformDesc 
FROM dbo.tbl_Platform CROSS JOIN dbo.tbl_MissedSPT