ケースと結合する方法はありますか?
何かのようなもの
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
これを行う方法はありますか?
よろしくジョー
ケースと結合する方法はありますか?
何かのようなもの
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
これを行う方法はありますか?
よろしくジョー
これを行う通常の方法は、両方のテーブルを LEFT JOINし、CASE 条件に基づいて値を選択することです。
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
などのリテラル値のみを返します。string
int
しかし、回避策があります - dynamic 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変数でなければなりません。