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变量。这不是
部分的所做的吗?您可以合并另外两个表,并在
条件下联接。这不是
部分所做的吗?您可以合并其他两个表,并根据您的条件联接。