【发布时间】:2019-03-18 17:52:32
【问题描述】:
我的情况是有多个场景,我需要检查每个场景。如果两个或多个案例匹配,我需要连接结果。
我的想法是,使用 CASE 语句,但我无法使用 CASE 语句连接多个场景。
所以我现在正在做的是,使用 if 语句。以下是我做的查询:
declare @result varchar(200)
set @result=''
;with cte as
(
select * from table 1
)
if(column 1=5) set @result=@result+'case1'
if(column 2=6) set @result=@result+'case2'
if(column 3=7) set @result=@result+'case3'
if(column 4=10) set @result=@result+'case4'
select *,@result from cte
所以在这里,我需要在 CTE 之后立即使用 Select 语句,但我不能在 select 语句中使用 IF/ELSE 语句。但我也不能将 CASE 语句与变量连接一起使用。
所以结果应该是这样的:
id | column 1 | column 2| column 3| column 4| Result
-----------------------------------------------------
3 | 5 | 6 | 6 | 9 | case1;`case2
4 | 4 | 7 | 7 | 10 | case2
5 | 5 | 6 | 6 | 10 | case1;`case2; case4
6 | 5 | 6 | 7 | 10 | case2;case2;case3;case4
7 | 4 | 5 | 6 | 3 | No Result
谁能帮我完成这个?
【问题讨论】:
-
你能举一些你想要的例子吗?您是否试图通过连续连接到同一个字符串来使每一行中的值成为所有前面行的累积结果?我真的不确定您要达到的目标。请给出示例输入数据以及您希望从该示例数据中获得的结果:stackoverflow.com/help/mcve
-
是的,我已经用表格中所需的输出更新了问题
标签: sql sql-server msbi