我需要基于条件的结果,而无需使用动态SQL
就像什么时候,@param1=10
我需要来自table1的所有行详细信息
否则我需要来自table2的详细信息
我已经尝试过类似下面的内容,但没有给出结果
declare @param1 int=10;
select * from
case when @param1=10 then table1
else table2 end
注意:我知道我可以使用以下条件
if @param1=10
select * from table1
else
select * from table2
但就我而言,查询时间很长,所以我不想再次替换所有查询
所以我希望我可以做一些事,而不必再次替换所有查询。
请帮助我解决问题
您可以将aUNION ALL
作为子查询放置,然后围绕该查询构建其余查询:
SELECT
* --TODO - Columns
FROM
(SELECT * FROM tableA WHERE @Param=10
UNION ALL
SELECT * FROM TableB WHERE @Param<>10) t
WHERE /* other conditions here */
顺便说一句-如果您有两个包含相同行类型的表,而您想在查询中交换它们,则可能表明您的数据模型已损坏-应该将其建模为属性已嵌入到您的表名称中。例如,与其具有FemaleEmployees
andMaleEmployees
表,不应该是Employees
具有Gender
列的单个表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句