Sql server 有没有一种方法可以连接案例

Sql server 有没有一种方法可以连接案例,sql-server,function,sql-server-2000,table-functions,Sql Server,Function,Sql Server 2000,Table Functions,有没有一种方法可以连接案例 差不多 select * from abba case when a=b then join acdc on abba.id=acdc.id when b=c then join bebop on abba.id=bebop.id end 有办法做到这一点吗 致意 Joe通常的方法是将两个表左键联接,并根据案例条件选择值: SELECT *, CASE WHEN a=b THEN acdc.myField ELSE

有没有一种方法可以连接案例

差不多

select * from abba 
   case when a=b then 
      join acdc on abba.id=acdc.id
   when b=c then 
      join bebop on abba.id=bebop.id 
   end
有办法做到这一点吗

致意
Joe

通常的方法是将两个表左键联接,并根据案例条件选择值:

SELECT *, CASE WHEN a=b THEN acdc.myField ELSE bebop.myField END AS myField
  FROM abba 
       LEFT JOIN acdc ON abba.id=acdc.id 
       LEFT JOIN bebop ON abba.id=bebop.id

通常的方法是左键联接两个表,并根据案例条件选择值:

SELECT *, CASE WHEN a=b THEN acdc.myField ELSE bebop.myField END AS myField
  FROM abba 
       LEFT JOIN acdc ON abba.id=acdc.id 
       LEFT JOIN bebop ON abba.id=bebop.id

如果查询是非动态的,那么no-since
case
语句只返回一个文本值,例如
字符串
int
,或其他数据类型

但是有一个解决方案-动态sql。将整个语句视为字符串。然后,您可以在字符串中处理您的案例

例如:

declare @query varchar(1000)
set @query = 'select * from abba '+
                case when @a=@b then 'join acdc on abba.id=acdc.id'
                     when @b=@c then 'join bebop on abba.id=bebop.id'
                end
exec(@query)

当然,a=b&b=c必须是某个sql变量。

如果查询是非动态的,那么no-since
case
语句只返回一个文本值,例如
string
int
或其他数据类型

但是有一个解决方案-动态sql。将整个语句视为字符串。然后,您可以在字符串中处理您的案例

例如:

declare @query varchar(1000)
set @query = 'select * from abba '+
                case when @a=@b then 'join acdc on abba.id=acdc.id'
                     when @b=@c then 'join bebop on abba.id=bebop.id'
                end
exec(@query)

当然,你的a=b&b=c必须是一些sql变量。

这不是
部分的
所做的吗?您可以合并另外两个表,并在
条件下联接
。这不是
部分所做的吗?您可以合并其他两个表,并根据您的条件联接