[英]SQL - SELECT from a table if a certain condition is met, else SELECT from another
如何在SQL中执行此操作:
SELECT CLIENT, PAYMENT_CODE FROM PAYMENTS_TABLE
If PAYMENT_CODE = 1, SELECT other data from table_1
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.