是否可以根据mssql中的case选择结果从不同的表中进行选择?
答案 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。