当我运行以下内容时:
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
但是如果我添加它,它就无法识别它......它失败了
答案 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
)