场景:两个DB在同一台服务器中。 SRC DB和TGT DB.Both具有相同的20个具有相同列名的表。如果今天SRC和TGT DB相等,并且明天SRC中的几个列值会更新。如何动态地使用sql server捕获这些更改的列名。 我使用的逻辑如下所示,但它是每个表的硬编码解决方案。我希望它是动态的。
SELECT DISTINCT PK_COL_NAMES,
Result = CASE WHEN **a.COL1 != b.COL1 THEN ‘COL1,' ELSE '' END +
CASE WHEN a. COL2 != b. COL2 THEN 'COL2,' ELSE '' END +
CASE WHEN a. COLN != b. COLN THEN 'COLN,' ELSE '' END**
FROM #TEMP b
LEFT JOIN #TEMP a
ON a.PK_COL1=b.PK_COL1 AND
a.PK_COL2=b.PK_COL2
WHERE **a.COL1 != b.COL1 OR
a.COL2 != b.COL2 OR
a.COLN != b.COLN**
PKCOL - >是表中的相同列名但是主
PS:我的一张桌子也有大约98根。它们因桌子而异。