【发布时间】:2021-12-20 14:20:12
【问题描述】:
表映射
| ID | CUST_ID | MEMID | CRE_DT | UPD_DT
----------------------------------------
| 1 | AA21 | NULL |20210101|20210101
| 2 | AA21 | MID01 |20210202|20210202
| 3 | AA50 | MID00 |20210101|20210101
表MASTER
| ID | CUST_ID | NEW_MEMID
| 2 | AA21 | NW01
| 3 | AA50 | NW02
更新后的输出
表映射
| ID | CUST_ID | MEMID | CRE_DT | UPD_DT
----------------------------------------
| 1 | AA21 | NULL |20210101|20210101
| 2 | AA21 | NW01 |20210202|20210202
| 3 | AA50 | NW02 |20210101|20210101
我在 Mapping 中更新数据时遇到问题,我只想更新最新记录。
注意:1 CUST_ID : M ID 因此我需要按 cust_id order by upd_dt DESC,ID ASC 进行分区以获取最新记录。
我只想更新行
ID = 2 CUST_ID = AA21
ID = 3 CUST_ID = AA50
UPDATE MAPPING
SET MEMID = NEW_MEMID
FROM
(SELECT DISTINCT
ID, CUST_ID, NEW_MEMID
FROM MASTER) SRC
WHERE (SRC.ID, SRC.CUST_ID) IN
(SELECT ID, CUST_ID
FROM
(SELECT
DISTINCT ID, CUST_ID,
ROW_NUMBER() OVER (PARTITION BY CUST_ID ORDER BY COALESCE(UPDATED_DATE, CREATED_DATE) DESC, ID ASC) RN
FROM MAPPING) LASTEST
WHERE RN = 1)
在第 33 行,第 42 列解析错误:',' 附近的语法不正确。
这是WHERE (SRC.ID,SRC.CUST_ID) IN
【问题讨论】:
-
对不起,我已经编辑过了。
标签: sql sql-update azure-synapse