我有3张桌子
我需要根据传递的参数将TableA连接到TableB或TableC.即
select * from
TableA A
join (TableB on <Joining Condition> / TableC on <joining condition> )
Run Code Online (Sandbox Code Playgroud)
我试过以下查询
select * from
TableA A
join (
case when paramB<>'' then TableB on <Joining Condition>
case when paramC<>'' then TableC on <joining condition>
)
Run Code Online (Sandbox Code Playgroud)
但是,这会给出语法错误.任何人都可以帮忙吗?
解:
create table #temp (<columns>)
if paramB<>''
begin
select * from
TableA A
join TableB on <Joining Condition>
end
else if paramB<>''
begin
select * from
TableA A
join TableC on <Joining Condition>
end
Run Code Online (Sandbox Code Playgroud)
你可以用UNION ALL.
select *
from a
join TableB on <join condition>
where paramB <> ''
union all
select *
from a
join TableC on <join condition>
where paramC <> ''
Run Code Online (Sandbox Code Playgroud)
请注意,TableB并且TableC必须具有相同数量的列并具有相同的数据类型,否则将产生错误.
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |