只显示包含一行的两个不同select语句的列?



我有两个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;

的回报:

tbody> <<tr>
Result
test1: ABC, test3:123

相关内容

  • 没有找到相关文章