我有这张桌子:
Assets
--------------------------------
Description VARCHAR(50) NOT NULL
Suffix1 VARCHAR(50) NOT NULL
UseSuffix1 BIT NOT NULL
Suffix2 VARCHAR(50) NULL
UseSuffix2 BIT NOT NULL
Suffix3 VARCHAR(50) NULL
UseSuffix3 BIT NOT NULL
我正在尝试执行构造以下内容的SELECT
语句:包含Description
字段的VARCHAR(MAX)列,以及在需要时附加的其他后缀(通过UseSuffixX标志)
输入和输出的例子:
'MyDesc'
'Suffix1'
0
NULL -> 'MyDesc'
0
NULL
0
-----------------------
'MyDesc'
'Suffix1'
1
NULL -> 'MyDesc - Suffix1'
0
NULL
0
-----------------------
'MyDesc'
'Suffix1'
0
'Suffix2' -> 'MyDesc - Suffix2 - Suffix 3'
1
'Suffix3'
1
-----------------------
'MyDesc'
'Suffix1'
1
'Suffix2' -> 'MyDesc - Suffix1 - Suffix 3'
0
'Suffix3'
1
我开始在我的CASE
中使用SELECT
指令,如下所示:
SELECT
[Description] +
CASE
WHEN UseSuffix1 = 1 THEN ' - ' + Suffix1
WHEN UseSuffix2 = 1 THEN ' - ' + Suffix2
WHEN UseSuffix3 = 1 THEN ' - ' + Suffix3
ELSE ''
END
FROM Assets
但很快意识到我需要在每个WHEN
分支中扩展所有可能性的树...不确定我是否在这里正确表达自己。
更实际的方法是什么?
答案 0 :(得分:2)
您不需要所有可能性,每个后缀只有一个case
:
SELECT ([Description] +
(CASE WHEN UseSuffix1 = 1 THEN ' - ' + Suffix1 ELSE '' END) +
(CASE WHEN UseSuffix2 = 1 THEN ' - ' + Suffix2 ELSE '' END) +
(CASE WHEN UseSuffix3 = 1 THEN ' - ' + Suffix3 ELSE '' END)
)
FROM Assets