我使用下面的查询将两个列值与','组合在一起。
SELECT
RTRIM(LTRIM(REPLACE(
IsNull(tbl1 .Reason,'') + ',' + IsNull(tbl2.OtherReason,''),',' ,'')))
FROM tbl1
LEFT JOIN tbl2 ON tbl2.OtherReasonId = tbl1.ReasonId
现在问题是它使用上面的查询删除所有','我想删除last和first','。
我结合了两列。现在 如果tbl1 .Reason为null则显示输出为“,tbl2.OtherReason”,如果tbl2.OtherReason为null,则输出为“tbl1 .Reason”,
在上述查询之前,我也尝试使用以下查询:
SELECT
IsNull(tbl1.Reason,'') + ',' + IsNull(tbl2.OtherReason,'')
FROM tbl1
LEFT JOIN tbl2 ON tbl2.OtherReasonId = tbl1.ReasonId
谢谢, HITESH
答案 0 :(得分:1)
您可以使用中间的案例来检查值是否为空。
declare @a nvarchar(5)
,@b nvarchar(5)
set @a = 'abc'
set @b = null--'123'
select isnull(@a, '') + case when @a is not null and @b is not null then ',' else '' end + isnull(@b, '')
答案 1 :(得分:0)
试试这个:
SELECT
CASE
WHEN tbl1.Reason IS NULL
THEN
CASE
WHEN tbl2.Reason IS NULL
THEN ''
ELSE LTRIM(RTRIM(tb2.Reason))
END
ELSE tbl1.Reason +
CASE
WHEN tbl2.Reason IS NULL
THEN ''
ELSE ',' + LTRIM(RTRIM(tb2.Reason))
END
END
FROM tbl1
LEFT JOIN tbl2 ON tbl2.OtherReasonId = tbl1.ReasonId
答案 2 :(得分:0)
如果第二个值不为null,则可以将逗号连接到第一个值:
SELECT
IsNull(tbl1.Reason + case when tbl2.OtherReason is null then '' else ',' end, '') +
IsNull(tbl2.OtherReason,'')
FROM tbl1
LEFT JOIN tbl2 ON tbl2.OtherReasonId = tbl1.ReasonId