如何在查询中有条件地连接两个表列?

时间:2014-04-15 19:31:27

标签: sql ms-access

我有一张像

这样的表格
Description    SID        code          
-----------    ----       ---------    
ssdad          1001       S2378797     
gfd            1002               
gfdsffsdf      1003       R1165778     
ssdad          1004       M0007867     
gfd            1005       
gfdsffsdf      1006       W5464111     

如何连接SIDcode以使其SID-Code,但如果code为空,则结果不应与例如1002-相同。相反,它应该只包含SID而不关注-

结果应如下所示:

Description    SID        code         SID-Code
-----------    ----       ---------    ---------
ssdad          1001       S2378797     1001-S2378797
gfd            1002                    1002
gfdsffsdf      1003       R1165778     1003-R1165778
ssdad          1004       M0007867     1004-M0007867  
gfd            1005                    1005
gfdsffsdf      1006       W5464111     1006

2 个答案:

答案 0 :(得分:3)

您可以利用VBA的两个连接运算符中的差异:

Null不会使用&传播:

“abc”& Null =“abc”

Null使用+传播:

“abc”+ Null = Null

SELECT Description, SID, code, SID & ("-" + code) as [SID-Code])
FROM YourTable

答案 1 :(得分:2)

在Access查询中,您可以使用大量VBA函数。试试这个:

SELECT Description, SID, code, IIf(IsNull(code), SID, SID & "-" & code) As [SID-Code]
FROM MyTable

Whithin SQL IIf(code Is NULL, SID, SID & "-" & code)也可以正常工作。