DB2错误:SQL0216N尝试删除重复记录时

时间:2015-04-16 16:50:43

标签: db2 duplicates

当我运行以下内容时:

DELETE  FROM db2Name.MyTable

    WHERE   (NBR, CATEGORY, SALES_DATE) IN
    (
       SELECT NBR, CATEGORY, SALES_DATE, RN
       FROM
      (
        SELECT 
        NBR, CATEGORY, SALES_DATE, 
        rownumber() over(PARTITION BY NBR, CATEGORY, SALES_DATE) RN  
        FROM db2Name.DELI_DATA
        WHERE NBR = 10 AND SALES_DATE = CURRENT_DATE - 7 DAYS         
      ) A

    WHERE  RN > 1

    GROUP BY NBR, CATEGORY, SALES_DATE, RN
    )

我收到错误SQL0216N

当我尝试使用类似的查询时,我正在尝试删除重复的记录而在表格中留下一个记录,它们会删除所有匹配的记录而不会留下任何记录

表def看起来像这样

NBR  int
addr  string
market int
category string
sales decimal
Sales_last_month decimal
sales_date date

我可以看到,该条款中的问题很可能是没有RN(这就是为什么它与小组不匹配)

WHERE   (NBR, CATEGORY, SALES_DATE) IN

但是如果我添加它,它就无法识别它......它失败了

1 个答案:

答案 0 :(得分:0)

这可能只是

DELETE FROM (
  SELECT * FROM
  (
    SELECT 
      rownumber() over (PARTITION BY NBR, CATEGORY, SALES_DATE) RN  
    FROM db2Name.DELI_DATA
    WHERE NBR = 10 AND SALES_DATE = CURRENT_DATE - 7 DAYS         
  ) A
  WHERE  RN > 1
)