原谅我的长期问题,但我更多的是寻找故障排除建议。 A.DR_CR
和B.DR_CR
都有distinct
个值'D'
或'C'
我想审核表A中的值将被更改的记录数(D到C或反之亦然)因此我在更新语句之前编写了以下select。连接键ID
和SRC_TRAN_ID
在两个表中都不是唯一的。
select语句显示更新为借记(CR_TO_DB)
的信用计数为588017
和DB_TO_CR
是924119
但是,当我使用相同的加入条件运行更新时,我发现更新为借记的信用数量比CR_TO_DB
的上述选择结果少3257,同样地,DB_TO_CR
计数是3257更多比924119。
我无法解决为什么更新不会更新具有相同连接条件的select返回的记录数的原因。请帮忙。
SELECT
(CASE WHEN A.DR_CR != B.DR_CR AND A.DR_CR = 'C' AND B.DR_CR='D' THEN 1 END) CR_TO_DB
,(CASE WHEN A.DR_CR != B.DR_CR AND A.DR_CR = 'D' AND B.DR_CR='C' THEN 1 END) DB_TO_CR
INTO MTL_REPORT
FROM #STAGING_TRANSACTIONS A
JOIN #CLEAN_MTL_UPDATE B
ON A.SRC_TRANID = B.SRC_TRANID
AND A.ID = B.ID
UPDATE A
SET
A.DR_CR = B.DR_CR
FROM #STAGING_TRANSACTIONS A
JOIN #CLEAN_MTL_UPDATE B
ON A.SRC_TRANID = B.SRC_TRANID
AND A.ID = B.ID
答案 0 :(得分:0)
我将用更简单的术语解释它与较小的数据集。鉴于这两个表:
CREATE TABLE TableA (Col1 INT, Col2 INT, Col3 VARCHAR(10))
CREATE TABLE TableB (Col1 INT, Col2 INT, Col3 VARCHAR(10))
INSERT INTO TableA (Col1, Col2, Col3) VALUES (1, 1, 'a')
INSERT INTO TableA (Col1, Col2, Col3) VALUES (1, 1, 'b')
INSERT INTO TableA (Col1, Col2, Col3) VALUES (1, 2, 'c')
INSERT INTO TableB (Col1, Col2, Col3) VALUES (1, 1, 'd')
INSERT INTO TableB (Col1, Col2, Col3) VALUES (1, 1, 'e')
INSERT INTO TableB (Col1, Col2, Col3) VALUES (1, 2, 'f')
此查询将为您提供5行,因为Col1=1, Col2=1
在两个表上都存在两次。
SELECT *
FROM TableA
JOIN TableB ON TableA.Col1 = TableB.Col1 AND TableA.Col2 = TableB.Col2
你得到像这样的Col3对:
a, d
b, d
a, e
b, e
c, f
使用相同连接的UPDATE语句实质上过滤掉了唯一记录,并仅对它们进行报告。毕竟,您想知道有多少记录受到影响。