我有两个select语句,它们都有一行但固定数量的列(15)。
到目前为止,我已经尝试使用intersect
,但它似乎不做我想要的
select 'ABC' as test, 'DEF' as test2, '123' as test3
select 'ABC2' as test, 'DEF' as test2, '124' as test3
比较两者将显示a字符串的差异
结果将具有不同值的列作为字符串。在本例中:
"'test': 'ABC', 'test3': '123'"
使用一堆大小写表达式来比较每列,如果不同则输出一个值,例如
select
case when a.test1 <> b.test1 then 'test1:' + a.test1 else '' end
+ case when a.test2 <> b.test2 then ', test2:' + a.test2 else '' end
+ case when a.test3 <> b.test3 then ', test3:' + a.test3 else '' end
from (
select 'ABC' as test1, 'DEF' as test2, '123' as test3
) a
cross join (
select 'ABC2' as test1, 'DEF' as test2, '124' as test3
) b;
的回报:
Result | test1: ABC, test3:123 |
---|