【问题标题】:Combine 2 sql queries into one with eliminating duplicate colums将 2 个 sql 查询合二为一,消除重复列
【发布时间】:2016-09-29 15:23:04
【问题描述】:

我已经使用多个连接语句编写了 2 个 sql 查询。

现在我想组合两个查询结果,如下所示。 第一个查询显示这些列

UDC_ID, EXT_ID, VALUE

第二个查询显示这些列

UDC_ID, EXT_ID, VALUE

在两个查询中,UDC_IDEXT_ID 列相同,但每个查询中的 VALUE 列不同

所以我要显示的最终输出是,

UDC_ID, EXT_ID, VALUE (From Query1), VALUE (from Query 2)

谁能建议如何做到这一点?

这些是我的疑问:

查询 1 连接三个表:

SELECT
  DEV.UDC_ID,
  SR.EXT_ID,
  SRA.VALUE
FROM SERVICE_REQUEST SR
JOIN DEVICE DEV
  ON SR.DEVICE_ID = DEV.ID
JOIN SERVICE_REQUEST_ATTR SRA
  ON SR.ID = SERVICE_REQUEST_ID
WHERE SR.SUB_TYPE_CD = 'HMI_22'
--AND DEV.SUB_TYPE = 'ESME'
AND SRA.NAME = 'CommsHubGUID'
AND SR.INSERT_TIME >= TO_DATE('2016-09-21 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND SR.INSERT_TIME <= TO_DATE('2016-09-28 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
ORDER BY SR.INSERT_TIME DESC;

查询1与本次查询的区别在于SRA.NAME字段的where子句条件,否则两个查询相同。

SELECT
  DEV.UDC_ID,
  SR.EXT_ID,
  SRA.VALUE
FROM SERVICE_REQUEST SR
JOIN DEVICE DEV
  ON SR.DEVICE_ID = DEV.ID`enter code here`
JOIN SERVICE_REQUEST_ATTR SRA
  ON SR.ID = SERVICE_REQUEST_ID
WHERE SR.SUB_TYPE_CD = 'HMI_22'
--AND DEV.SUB_TYPE = 'ESME'
AND SRA.NAME = 'Service Location'
AND SR.INSERT_TIME >= TO_DATE('2016-09-21 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND SR.INSERT_TIME <= TO_DATE('2016-09-28 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
ORDER BY SR.INSERT_TIME DESC

【问题讨论】:

    标签: sql


    【解决方案1】:
    SELECT COALESCE(q1.UDC_ID,q2.UDC_ID), 
          COALESCE(q1.EXT_ID, q2.EXT_ID),
          q1.VALUE , 
          q2.VALUE 
    FROM (query 1) q1
         FULL OUTER JOIN (query 2) q2 ON q1.UDC_ID=q2.UDC_ID and q1.EXT_ID=q2.EXT_ID
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多