我有一个巨大的查询,经常使用case /.现在我在这里有这个SQL,它不起作用.
(select case when xyz.something = 1
then
'SOMETEXT'
else
(select case when xyz.somethingelse = 1)
then
'SOMEOTHERTEXT'
end)
(select case when xyz.somethingelseagain = 2)
then
'SOMEOTHERTEXTGOESHERE'
end)
end) [ColumnName],
Run Code Online (Sandbox Code Playgroud)
造成麻烦的是xyz.somethingelseagain = 2,它说无法绑定那个表达.xyz是表的一些别名,它在查询中进一步连接.这里有什么不对?删除2个案例/小时中的一个纠正了这个,但我需要它们两个,可能更多的情况.
Flo*_*chl 93
SELECT
CASE
WHEN xyz.something = 1 THEN 'SOMETEXT'
WHEN xyz.somethingelse = 1 THEN 'SOMEOTHERTEXT'
WHEN xyz.somethingelseagain = 2 THEN 'SOMEOTHERTEXTGOESHERE'
ELSE 'SOMETHING UNKNOWN'
END AS ColumnName;
Run Code Online (Sandbox Code Playgroud)
小智 8
WHEN语句一旦为真,则中断是隐含的.
你必须得到一个最有可能发生的表达式.如果你将WHEN放在WHEN语句的长列表的末尾,那么你的sql可能会变慢.所以把它放在第一位.
更多信息:在T-SQL中打破case语句