簡體   English   中英

SQL-如果滿足特定條件,則從表中進行SELECT,否則滿足條件

[英]SQL - SELECT from a table if a certain condition is met, else SELECT from another

如何在SQL中執行此操作:

  1. SELECT CLIENT, PAYMENT_CODE FROM PAYMENTS_TABLE
  2. If PAYMENT_CODE = 1, SELECT other data from table_1
  3. Else, SELECT other data from table_2

我想要的結果是:

| Client | Payment Code = 1 | Address from table_1 | Phone from table_1 | ...

要么

| Client | Payment Code  1 | Address from table_2 | Phone from table_2 | ...

提前致謝!

盡管Rajesh的解決方案很好,但是您也可以使用兩個LEFT JOIN來完成;

SELECT pt.CLIENT, pt.PAYMENT_CODE, 
       COALESCE(t1.address, t2.address) address, 
       COALESCE(t1.phone,   t2.Phone)   phone
FROM PAYMENTS_TABLE pt
LEFT JOIN Table_1 t1 
  ON pt.client_code = t1.client_code AND pt.PAYMENT_CODE =  1
LEFT JOIN Table_2 t2 
  ON pt.client_code = t2.client_code AND pt.PAYMENT_CODE <> 1

編輯:根據對另一個答案的評論,添加了client_code作為鏈接條件。

您需要使用UNION ,當payment_code = 1時,一個SELECT查詢可從表_1獲取詳細信息,而另一個SELECT ,如果payment_code不等於1,則可從表_2獲取詳細信息

SELECT CLIENT, PAYMENT_CODE, T1.Address, T1.Phone FROM PAYMENTS_TABLE
JOIN Table_1 T1
ON -- your condition
WHERE PAYMENT_CODE =1
UNION 
SELECT CLIENT, PAYMENT_CODE, T2.Address, T2.Phone FROM PAYMENTS_TABLE
JOIN Table_2 T2
ON -- your condition
WHERE PAYMENT_CODE <> 1

您沒有告訴我們table_1和table_2如何鏈接到payments_table,但是這樣的方法應該起作用:

select p.client, 
       p.payment_code,
       case 
          when payment_code = 1 then t1.address
          else t2.address
       end as address,
       case 
          when payment_code = 1 then t1.phone
          else t2.phone
       end as phon
from payments_table p
   left join table_1 t1 on p.some_column = t1.some_column
   left join table_2 t2 on p.some_column = t2.come_column

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM