gpt4 book ai didi

sql-server - 根据第二个表中的值更新第一个表

转载 作者:行者123 更新时间:2023-12-01 10:26:21 24 4
gpt4 key购买 nike

我有两个表:

- @CAMERC
- @CAMERC_LOG

我必须使用 @CAMERC_LOG.MERC_LPR 列中的值更新 @CAMERC.MERC_LPR 列。记录必须在 MERC_KEY 上匹配,但只能从 @CAMERC_LOG 中获取一条记录 - 具有最高的 MERC_KEY_LOG@CAMERC_LOG.MERC_LPR 不能为 null 或 0。

我的问题是根据第二个表的结果更新一个表。我不知道如何正确地进行这样的更新?

表@CAMERC:

+----------+----------+
| MERC_KEY | MERC_LPR |
+----------+----------+
| 1 | 0.0000 |
| 2 | NULL |
| 3 | 0.0000 |
| 4 | 0.0000 |
+----------+----------+

表@CAMERC_LOG:

+----------+--------------+----------+
| MERC_KEY | MERC_KEY_LOG | MERC_LPR |
+----------+--------------+----------+
| 1 | 1 | 1.1000 |
| 1 | 2 | 2.3000 |
| 2 | 3 | 3.4000 |
| 2 | 4 | 4.4000 |
| 1 | 5 | 7.8000 |
| 1 | 6 | NULL |
| 2 | 7 | 0.0000 |
| 2 | 8 | 12.4000 |
| 3 | 1 | 12.1000 |
| 3 | 2 | 42.3000 |
| 3 | 3 | 43.4000 |
| 3 | 4 | 884.4000 |
| 4 | 5 | 57.8000 |
| 4 | 6 | NULL |
| 4 | 7 | 0.0000 |
| 4 | 8 | 412.4000 |
+----------+--------------+----------+

建表代码:

DECLARE @CAMERC TABLE
(
MERC_KEY INT,
MERC_LPR DECIMAL(10,4)
)

DECLARE @CAMERC_LOG TABLE
(
MERC_KEY INT,
MERC_KEY_LOG INT,
MERC_LPR DECIMAL(10,4)
)

INSERT INTO @CAMERC(MERC_LPR, MERC_KEY) VALUES(0, 1),(NULL,2),(0,3),(0,4)
INSERT INTO @CAMERC_LOG(MERC_LPR, MERC_KEY, MERC_KEY_LOG) VALUES(1.1, 1,1),(2.3,1,2),(3.4,2,3),(4.4,2,4),(7.8, 1,5),(NULL,1,6),(0,2,7),(12.4,2,8),
(12.1, 3,1),(42.3,3,2),(43.4,3,3),(884.4,3,4),(57.8, 4,5),(NULL,4,6),(0,4,7),(412.4,4,8)

最佳答案

试试这个:

WITH DataSource AS 
(
SELECT MERC_KEY
,ROW_NUMBER() OVER (PARTITION BY MERC_KEY ORDER BY MERC_KEY_LOG DESC) AS [RowID]
,MERC_LPR
FROM @CAMERC_LOG
WHERE MERC_LPR IS NOT NULL
AND MERC_LPR <> 0
)
UPDATE @CAMERC
SET MERC_LPR = B.[MERC_LPR]
FROM @CAMERC A
INNER JOIN DataSource B
ON A.[MERC_KEY] = B.[MERC_KEY]
AND B.[RowID] = 1

SELECT *
FROM @CAMERC

enter image description here

想法是从 @CAMER_LOG 中删除无效记录,然后使用 ROW_NUMBERMERC_KEY_LOG 对行进行排序。之后,我们仅在 RowID = 1 处执行 UPDATE

关于sql-server - 根据第二个表中的值更新第一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47308995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com