当前位置:  开发笔记 > 数据库 > 正文

是否可以在sql From子句中使用Case语句

如何解决《是否可以在sqlFrom子句中使用Case语句》经验,为你挑选了2个好方法。

是否可以使用SQL 2005在sql From子句中使用Case语句?例如,我正在尝试这样的事情:

SELECT Md5 FROM 
CASE
    WHEN @ClientType = 'Employee' THEN @Source = 'HR'
    WHEN @ClientType = 'Member' THEN  @Source = 'Other'
END CASE 
WHERE Current = 2;

yukondude.. 23

我不相信这是可能的.首先,查询优化器假定FROM子句中特定于表的事物列表.

我能想到的最简单的解决方法是两个表之间的UNION:

SELECT  md5
FROM    hr
WHERE   @clienttype = 'Employee'
AND     current = 2
UNION
SELECT  md5
FROM    other
WHERE   @clienttype = 'Member'
AND     current = 2;

考虑到@clienttype谓词,只有一半的UNION可以为True.



1> yukondude..:

我不相信这是可能的.首先,查询优化器假定FROM子句中特定于表的事物列表.

我能想到的最简单的解决方法是两个表之间的UNION:

SELECT  md5
FROM    hr
WHERE   @clienttype = 'Employee'
AND     current = 2
UNION
SELECT  md5
FROM    other
WHERE   @clienttype = 'Member'
AND     current = 2;

考虑到@clienttype谓词,只有一半的UNION可以为True.



2> jhale..:

假设SQL Server:

您需要使用动态SQL.构建字符串,然后使用字符串调用sp_executesql.

编辑:更好的是,只需使用if语句来执行适当的语句并将值赋给变量.如果可能,您应该避免使用动态SQL.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有