0
这里是我的代码示例:如何优化MSSQL CASE WHEN查询
SET @variable_out =
'Report: '
+ CASE WHEN (SELECT name FROM person WITH(NOLOCK) WHERE person_id = @person_id) != ''
THEN 'Name: ' + (SELECT name FROM person WITH(NOLOCK) WHERE person_id = @person_id) + CHAR(13)+CHAR(10)
ELSE 'Name: not found' + CHAR(13)+CHAR(10)
END
+ CASE WHEN (SELECT home_phone FROM person WITH(NOLOCK) WHERE person_id = @person_id) != ''
THEN 'Phone #: ' + (SELECT home_phone FROM person WITH(NOLOCK) WHERE person_id = @person_id) + CHAR(13)+CHAR(10)
ELSE 'Phone #: not found' + CHAR(13)+CHAR(10)
END
等等
正如你所看到的,我冗余每个CASE WHENE执行两个选择...我正在构建的变量中,我希望将其折叠为每行只有一个选择。
我所知道的唯一解决方案是为CASE WHEN ...创建一个唯一变量,手动执行所有选择,然后如果变量不是空的,则将它们连接到@variable_out。
有没有更聪明的方法来实现这个目标?
啊,太棒了!我不得不稍微调整语法,但这比我想要的要好得多。谢谢! – Joshua