1張桌子
| tel_no | client_no |
|-------------|---------------|
| 01011111234 | aa011234 |
| 01022221234 | aa021234 |
2 表
| client_no | client_name |
|-----------|-------------|
| 1234 | kim |
3 表
| client_no | client_name |
| 1234 | wa |
我想要:
- 如果1table的client_no前面以aa01開頭,則2table的client_name會改變。
- 如果1table的client_no前面以aa02開頭,則3table的client_name會改變。
預期結果:
| tel_no | client_no | client_name |
|-------------|------------|-------------|
| 01011111234 | aa011234 | kim |
| 01022221234 | aa021234 | wa |
uj5u.com熱心網友回復:
多么糟糕的資料模型……
樣本資料:
SQL> with
2 t1 (tel_no, client_no) as
3 (select '01011111234', 'aa011234' from dual union all
4 select '01022221234', 'aa021234' from dual
5 ),
6 t2 (client_no, client_name) as
7 (select '1234', 'kim' from dual),
8 t3 (client_no, client_name) as
9 (select '1234', 'wa' from dual)
10 --
詢問:
11 select a.tel_no, a.client_no,
12 case when substr(a.client_no, 1, 4) = 'aa01' then b.client_name
13 when substr(a.client_no, 1, 4) = 'aa02' then c.client_name
14 end client_name
15 from t1 a join t2 b on substr(a.client_no, 5) = b.client_no
16 join t3 c on substr(a.client_no, 5) = c.client_no;
TEL_NO CLIENT_N CLI
----------- -------- ---
01011111234 aa011234 kim
01022221234 aa021234 wa
SQL>
uj5u.com熱心網友回復:
您可以使用 UNION ALL 加入 2 個選擇性聯接:
SELECT tel_no, t1.client_no, client_name
FROM t1 JOIN t2
ON t1.client_no = CONCAT('aa01',t2.client_no)
UNION ALL
SELECT tel_no, t1.client_no, client_name
FROM t1 JOIN t3
ON t1.client_no = CONCAT('aa02',t3.client_no);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/428098.html
