ITQ*_*est 0 sql sql-server oracle join rdms
我有两个表,即Table1和Table2
Table1
custId--custName--custAge
c1--c1name--32
c2--c2name--41
c3--c3name--41
Run Code Online (Sandbox Code Playgroud)
表2
custId--verified--custName
c1--Y--c1FullName
c2--N--c2FullName
Run Code Online (Sandbox Code Playgroud)
我需要连接 Table1 和 Table2,这样如果表 2 中验证的列是 Y,我需要来自 Table2 而不是 Table1 的 custName。
因此,所需的输出是:(如果该 custId 验证的列是 Y,则覆盖 Table2 中的 custName 列)
custId--custName--custAge
c1--c1FullName--32
c2--c2name--41
c3--c3name--41
Run Code Online (Sandbox Code Playgroud)
我写了以下查询,但没有给出正确的结果。请帮忙。
select T1.custId, NVL(T2.custName, T1.custName),T1.custAge
from Table1 T1
left join Table2 T2 on T1.custId=T2.custId and T2.verified='Y'
Run Code Online (Sandbox Code Playgroud)
您可以使用CASE语句来实现此目的:
SELECT tab1.custId,
CASE
WHEN (tab2.verified = 'Y')
THEN tab2.custName
ELSE tab1.custName
END AS CustName,
tab1.custAge
FROM Table1 tab1
LEFT JOIN Table2 tab2 ON tab1.custId = tab2.custId
Run Code Online (Sandbox Code Playgroud)
在这里看到这个 -> http://rextester.com/EVOMK25746(这个小提琴是建立在 SQL Server ,但是,查询也应该适用于 Oracle 数据库)
希望这可以帮助!!!
| 归档时间: |
|
| 查看次数: |
3561 次 |
| 最近记录: |