如何在SQLServer中消除两个select查询中的重复数据

如何在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

我有两个select查询,返回的结果集如下

结果1:

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;