SQL 连接以覆盖左表的特定列

ITQ*_*est 0 sql sql-server oracle join rdms

我有两个表,即Table1Table2
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)

Sat*_*rny 5

您可以使用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 数据库

希望这可以帮助!!!