Как сравнить несоответствующие данные между двумя таблицами и показать их подряд в базе данных Oracle или ASP.NET MVC - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть две таблицы в базе данных Oracle. Один, содержащий временные данные, и другой, содержащий постоянные данные. Я хочу сравнить их и посмотреть, какие данные столбцов имеют несоответствие между ними для одного и того же уникального идентификатора.

Вот две таблицы:

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 в коде, это также подойдет.

1 Ответ

0 голосов
/ 04 апреля 2019

Я смоделировал ваш пример в следующих запросах:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...