sql - 如何在 Oracle 数据库或 ASP.NET MVC 中比较两个表之间不匹配的数据并连续显示它们
问题描述
我在 Oracle 数据库中有两个表。一个包含临时数据,另一个包含永久数据。我想比较它们,看看哪些列数据在它们之间对于相同的唯一 ID 不匹配。
下面是两张表:
BRIDGE_FINAL:
BRIDGE_ID MATERIAL_ID HEIGHT WIDTH THICKNESS
dff12cd6 4 0 0 0
15b54528 4 0 0 0
486a0aa7 4 0 0 0
2ae64f7b 1 0 0 0
2acf7e37 1 0 0 0
5e7baef5 1 0 0 0
BRIDGE_TEMP:
BRIDGE_ID MATERIAL_ID HEIGHT WIDTH THICKNESS
dff12cd6 4 5 0 0
15b54528 4 6 7 9
486a0aa7 4 0 0 0
2ae64f7b 1 0 0 0
2acf7e37 1 0 0 0
5e7baef5 1 0 0 0
我想准确显示相同 BRIDGE_ID 的哪些列的值不匹配,两个列值并排
我的预期输出:
BRIDGE_ID COLUMN_NAME FINAL_VALUE TEMP_VALUE
dff12cd6 HEIGHT 0 5
15b54528 HEIGHT 0 6
15b54528 WIDTH 0 7
15b54528 THICKNESS 0 9
我需要在 Oracle 数据库中进行。但是如果这可以在 ASP.NET MVC 的代码中完成,它也可以。
解决方案
我在以下查询中模拟了您的示例:
create table final_value(bridge_id varchar(40), material_id int, height int, width int, thickness int);
create table temp_value(bridge_id varchar(40), material_id int, height int, width int, thickness int);
insert into final_value values ('dff12cd6',4,0,0,0),('15b54528',4,0,0,0),('486a0aa7',4,0,0,0);
insert into temp_value values ('dff12cd6',4,5,0,0),('15b54528',4,6,7,9),('486a0aa7',4,0,0,0);
select a.bridge_id as 'Bridge ID', a.measure_name AS 'Measure Name', a.final_val as 'Final Value', ISNULL(b.temp_val, 0) as 'Temp Value ' from
(select bridge_id,
measure_name,
final_val
from final_value
unpivot
(
final_val
for measure_name in (height, width, thickness)
) unpiv) a
left join
(select bridge_id,
measure_name,
temp_val
from temp_value
unpivot
(
temp_val
for measure_name in (height, width, thickness)
) unpiv) b
on
a.bridge_id = b.bridge_id and
a.measure_name = b.measure_name;
您也可以在此处从 rextester 引用相同的内容:https ://rextester.com/WFHO83710
推荐阅读
- java - Java:将行和单词存储到单独的数组列表中,无法打印结果
- aframe - 使用 aframe 更改 glb 3D 模型的不透明度
- python - 将数字行转换为一个以逗号分隔的列表
- python - 如何在谷歌云上使用共享 gunicorn 异步处理多个请求?
- python - 减去转换为日期时间对象的字符串
- python - 比较 2 个字典列表并在识别出公共键时添加键、值
- python - 如何通过/through_fields 修复 django 模型中的 PEP fields.E339?
- flutter - 如何在实例化时覆盖 Dart 方法?
- oracle - 表,触发器,.. 在删除的连接中仍然存在于新的连接 SQL DEVELOPER 。如何删除所有表,......并且它们不会在新的连接中退出??
- ruby-on-rails - 在 Mac 上安装 Ruby 2.6.6 或 2.6.7