根据条件选择连接表

Sah*_*ahi 0 sql-server join

我有3张桌子

  1. 表A
  2. 表B
  3. 表C

我需要根据传递的参数将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)

Fel*_*tan 5

你可以用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必须具有相同数量的列并具有相同的数据类型,否则将产生错误.