SQL案例选择

时间:2010-11-17 18:20:08

标签: sql sql-server

是否可以根据mssql中的case选择结果从不同的表中进行选择?

4 个答案:

答案 0 :(得分:4)

Select
  ConditionalValue = (Case When something Then Table1.Value Else Table2.Value End),
  ...
From
  Table1
  ...
  Table2

有关详细信息,我们需要更多详细信息。

答案 1 :(得分:4)

您可以构建动态SQL然后执行它。

DECLARE @SQL nvarchar(1000)

SET @SQL = 'SELECT * FROM '

CASE Condition
    WHEN 1 THEN @SQL = @SQL  + 'TABLE '
    ELSE @SQL = @SQL  + 'TABLE1 '
END

EXEC(@SQL)

答案 2 :(得分:1)

好吧,如果表格有一对一的关系,你可以加入它们,然后从A或B中返回一列,具体取决于列的case操作符。除此之外,您可以使用过程代码(TransactSQL)来测试确定要从中选择的表的条件,并调用一个select语句或另一个返回相同列的语句,但每个语句都指向一个表。如果表具有类似的模式并且您从程序中查询它们,则可以根据要检查的条件操作命令的字符串表示形式。最后,您可以UNION两个查询,每个查询指向一个不同的表,每个子查询上有一个WHERE子句来评估条件,如果为false则不返回任何行。

答案 3 :(得分:1)

IF语句控制流程不是CASE。如果要从查询中的联接中的两个不同表中的一个中选择值,则CASE是合适的,否则使用IF。