SQL查询返回重复项

时间:2016-10-03 14:06:12

标签: sql oracle

我正在尝试将SQL语句作为物化视图运行,然后将表与更大的表连接起来。我遇到了在较大的表中违反项目/位置组合的重复约束的问题。这是我的物化视图查询:

<div id = "container">
  <h1>Emberails</h1>

  {{ input value=newEntryName enter='addEntry' }}

  <ul>
    {{#each entries}}
      <li>{{name}}</li>
    {{/each}}
  </ul>

</div>

现在,当我单独运行嵌套查询时,我减少了几百行,并且项目/位置组合都是唯一的,但是当运行整个查询时,将返回几百行并重复项目/位置。< / p>

1 个答案:

答案 0 :(得分:0)

解决方案是使用函数max来取消CANCEL_ID以消除重复的ITEM / LOCATION。由于有一种罕见的情况,我有相同的ITEM,LOCATION,LAST_CNCL_DATE,但有两个不同的CANCEL_ID。这是我使用的代码。

SELECT CAN.CNCL_CNT, CAN.ITEM, CAN.LOCATION,
 CAN.LAST_CNCL_DTE, MAX (OL.CANCEL_ID) AS CANCEL_ID
FROM ORDLOC OL,
     (SELECT COUNT(CANCEL_DATE) AS CNCL_CNT, ITEM, LOCATION, 
     MAX(CANCEL_DATE) AS LAST_CNCL_DTE
     FROM ORDLOC
     WHERE CANCEL_DATE BETWEEN (TO_DATE(20160123,'yyyymmdd') -60) AND TO_DATE(20160123,'yyyymmdd') 
     GROUP BY ITEM, LOCATION) CAN  
WHERE CAN.ITEM = OL.ITEM 
AND CAN.LOCATION = OL.LOCATION
AND CAN.LAST_CNCL_DTE = OL.CANCEL_DATE
GROUP BY CAN.CNCL_CNT, CAN.ITEM, CAN.LOCATION, CAN.LAST_CNCL_DTE