我正在编写一份删除声明,内容如下:
DEL FROM X.SALES1
WHERE CAST(SALES_T_ID AS DECIMAL(18,0)) IN(
SEL CAST(T1.SALES_T_ID AS DECIMAL(18,0) )FROM
(
SEL * FROM
X.SALES1
QUALIFY ROW_NUMBER() OVER( PARTITION BY SALES_SRC_ID,DSTC ORDER BY UPDATED_DATE_TIMESTAMP DESC) >1
) T1
) ; 以上删除应保留最新记录,并删除其余记录。然而,它正在删除所有的记录。我检查了内部查询并正常工作,只选择了最新更新的记录。但我不明白它为什么要删除所有的记录?
表结构如下:
CREATE SET TABLE X.SALES1 ,FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT,
DEFAULT MERGEBLOCKRATIO,
MAP = TD_MAP1
(
SALES_T_ID DECIMAL(18,0),
SALES_TRANS_NUM VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC,
SALES_SRC_ID VARCHAR(20) CHARACTER SET LATIN NOT CASESPECIFIC,
SALES_TRANS_START_DTTM TIMESTAMP(0),
ST_EXPECTED_CLOSE_DTTM TIMESTAMP(0),
ST_ACTUAL_CLOSE_DTTM TIMESTAMP(0),
ST_ACT_CONT_DTTM TIMESTAMP(0),
ST_EXP_CONT_CLS_DTTM TIMESTAMP(0)
)
PRIMARY INDEX ( SALES_T_ID );样本数据:
SALES_T_ID SALES_SRC_ID
715,603 3-3SDDJH5
593,803 3-3SDDJH5
715,604 3-3SDDJIG
593,804 3-3SDDJIG
715,605 3-3SDDJJR编辑:

我的要求是只保留Sales_trans_src_id和基于updated_date_timestamp的data_source_type_cd组合的最新行。
发布于 2018-07-23 11:49:50
DEL FROM X.SALES1
WHERE CAST(SALES_T_ID AS DECIMAL(18,0)) IN(
SEL CAST(T1.SALES_T_ID AS DECIMAL(18,0) )FROM
(
SEL * FROM
X.SALES1
QUALIFY rank() OVER( PARTITION BY SALES_SRC_ID,DSTC ORDER BY UPDATED_DATE_TIMESTAMP DESC) > 1
) T1
;你能检查一下这个吗?
https://stackoverflow.com/questions/51477750
复制相似问题