2017-06-12 90 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