如何在SQLServer中消除两个select查询中的重复数据
我有两个select查询,返回的结果集如下 结果1:如何在SQLServer中消除两个select查询中的重复数据,sql,sql-server,Sql,Sql Server,我有两个select查询,返回的结果集如下 结果1: FIELD_NAME DISPLAY MASK DEFAULTVALUE LOANTYPE 1 Test LoanType 2 PREAPPROVAL 1 Test Preapproval 2 结果2: FIELDNAME DISPLAY MASK DEFAULTVALUE
FIELD_NAME DISPLAY MASK DEFAULTVALUE
LOANTYPE 1 Test LoanType 2
PREAPPROVAL 1 Test Preapproval 2
结果2:
FIELDNAME DISPLAY MASK DEFAULTVALUE
LOANTYPE NA NA
INTEREST NA NA
HOMETYPE NA NA
PREAPPROVAL NA NA
PURCHASERTYPE NA NA
PURPOSE NA NA
PREAPPROVAL NA NA
我想得到如下结果。任何帮助都将不胜感激
FIELD_NAME DISPLAY MASK DEFAULTVALUE
LOANTYPE 1 Test LoanType 2
PREAPPROVAL 1 Test Preapproval 2
INTEREST NA NA
HOMETYPE NA NA
PREAPPROVAL NA NA
PURCHASERTYPE NA NA
PURPOSE NA NA
PREAPPROVAL NA NA
这里需要从复制中删除LOANTYPE和PREAPPROVAL值。我尝试了两个使用右连接的CTE。但它没有给出预期的结果。您可以在下面使用左连接和大小写进行尝试 如果table2值为null,则可以使用coalesce()函数,而不是CASE
select
a.FIELD_NAME,
case when a.DISPLAY='NA' then b.display else a.display end as DISPLAY,
case when a.MASK='NA' then b.Mask else a.mask end as MASK,
case when a.DEFAULTVALUE='NA' then b.defaultvalue else a.defaultvalue end as Defaultvalue
from resultset2 a left join resultset1 b
on a.loantype=b.loadtype
您可以在以下情况下尝试使用左连接和大小写 如果table2值为null,则可以使用coalesce()函数,而不是CASE
select
a.FIELD_NAME,
case when a.DISPLAY='NA' then b.display else a.display end as DISPLAY,
case when a.MASK='NA' then b.Mask else a.mask end as MASK,
case when a.DEFAULTVALUE='NA' then b.defaultvalue else a.defaultvalue end as Defaultvalue
from resultset2 a left join resultset1 b
on a.loantype=b.loadtype
您可以尝试使用窗口函数row_number()
您可以尝试使用窗口函数row_number()
您应该能够使用外部联接和
合并()
:
您应该能够使用外部联接和
合并()
:
select r2.field_name,
coalesce(r1.display, r2.display) as display,
coalesce(r1.mask, r2.mask) as mask,
coalesce(r1.defaultvalue, r2.defaultvalue) as defaultvalue
from resultset2 r2 left join
resultset1 r1
on r1.field_name = r2.field_name;