SQL查询返回重复项

公平的

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

SELECT /*+ materialize */ CAN.CNCL_CNT, CAN.ITEM, CAN.LOCATION,
      CAN.LAST_CNCL_DTE, OL.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') 
        AND CANCEL_DATE IS NOT NULL
      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, OL.CANCEL_ID

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

公平的

解决方案是对CANCEL_ID使用max函数,以消除重复的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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel SQL 查询返回重复项

来自分类Dev

左外部Join查询返回SQL Server中的重复项

来自分类Dev

在SQL Server中按查询分组返回重复项

来自分类Dev

Linq查询返回重复项

来自分类Dev

Hibernate查询返回的重复项是什么

来自分类Dev

查询子对象时返回的重复项

来自分类Dev

尽管嵌套查询不返回重复项,但查询返回重复项的查询

来自分类Dev

SQL查询返回重复值

来自分类Dev

具有空值的SQL查询分组返回重复项

来自分类Dev

SQL从查询结果中删除重复项

来自分类Dev

SQL子查询来处理重复项

来自分类Dev

访问SQL查询更新计算重复项

来自分类Dev

用于排除重复项的 SQL 查询

来自分类Dev

查询以返回所有行的所有重复项

来自分类Dev

查询以返回所有行的所有重复项

来自分类Dev

查询 Azure Cosmos DB 以不返回重复项

来自分类Dev

下拉选项查询sql返回重复

来自分类Dev

SQL Server查询返回重复的行

来自分类Dev

SQL(Oracle)-查询以查找所有重复项,仅保留最近创建的重复项

来自分类Dev

在SQL查询中使用分组依据来消除重复项

来自分类Dev

SQL:重复项计数和编号-优化相关子查询

来自分类Dev

如何在复杂的SQL查询中删除某些重复项

来自分类Dev

SQL查询删除表中的连续重复项

来自分类Dev

MS Access SQL查询表并删除重复项

来自分类Dev

预聚合子查询sql中的重复项

来自分类Dev

使用SQL查询按大小和名称查找重复项

来自分类Dev

SQL:重复项计数和编号-优化相关子查询

来自分类Dev

SQL查询以识别具有重复项的对

来自分类Dev

SQL查询建议-根据重复项更新记录