table A
----------------------------
NAME | CODE | BRANCH
----------------------------
bob | PL | B
david | AA | B
susan | PL | C
joe | AB | C
alfred | PL | B
table B
----------------------------
CODE | DESCRIPTION
----------------------------
PL | code 1
PB | code 2
PC | code 3
table C
----------------------------
CODE | DESCRIPTION
----------------------------
AA | code 4
AB | code 5
AC | code 6
テーブルA、B、Cを結合する方法はありますか?条件付き左結合SQL
select A.*, COALESCE(B.DESCRIPTION, C.DESCRIPTION) AS DESCRIPTION from A
left join B on A.CODE = B.CODE
left join C on A.CODE = C.CODE
私の実際のケースでは、同じ列に参加するには10以上があります。 だから私は条件付き左を必要とするが、あなたはフロー制御を実装するためにCASE
を使用することはできません。この
SELECT A* , DESCRIPTION
FROM A LEFT JOIN (
CASE
WHEN A.CODE = 'B' THEN SELECT * FROM B
WHEN A.CODE = 'C' THEN SELECT * FROM C
END
) BC ON A.CODE = BC.CODE
それは、ON句で代わりにcase式のAND/OR構造を使用する方が良いでしょう。 – jarlh
私は動的SQLはあなたがこの場合に欲しいと思う。これはあなたがそれを始めるのに役立ちます:https://www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql-commands-in-sql-server/ –
私はsqlfiddleを通して私に例を与えてもらえますか? – muhnizar