我正在寻找一个解决方案来做下面的问题在Oracle SQL端。
以下是问题陈述:我有两个查询得到结果,我需要将列值相互比较,如果值不同,则响应列名:
result1 = select id, name, address, age from Table1 where runId = 1;
result2 = select id, name, address, age from Table1 where runId = 2;
字符串
我需要比较result1.name
和result2.name
的值,以及result1.address
和result2.address
的值...类似地,只有当result1.id = result2.id
匹配并且值有任何变化(假设列仅为varchar类型)时,才会针对该ID响应该特定列。
示例如下:
结果1:
| 名称,名称|地址|年龄| age |
| --|--|--| ------------ |
| 约翰|加1|二十三| 23 |
| 狮子座|加法-2|三十四| 34 |
| 保罗|加法-3|三十五| 35 |
结果二:
| 名称,名称|地址|年龄| age |
| --|--|--| ------------ |
| 约翰·保罗|加1|二十七| 27 |
| 狮子座|加法-2|三十九| 39 |
产出
| columnName| columnName |
| --| ------------ |
| 名称,名称| name |
| 年龄| age |
| 年龄| age |
注:如果单个查询无法实现上述逻辑,则可以通过返回上述格式来接受Oracle过程。代替姓名、地址、年龄,在真实的查询中可以有更多的列需要比较,因此性能不应该受到影响,因为这里的行数可以是数百万条记录。如果Oracle中的并行处理可以在这里使用,那就太好了。
1条答案
按热度按时间nnvyjq4y1#
您可以:
字符串
测试结果:
型
还有:
型
分别。参见db<>fiddle上的运行示例。