Юнион Колумс sql сервер вертикально - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть две таблицы с одинаковыми номерами и именами столбцов, и я хочу объединить их столбцы.

У меня есть эта таблица с именем inicial_dolares

this is my first table called inicial_dolares

И пусть эта другая таблица называется inicial_cordobas

this is my first table called inicial_dolares

Iищу этот результат

enter image description here

Я пытался сделать это с объединениями, но не работает. общий столбец id_arqueo является целым числом. и я попробовал это объединение SQL, но по вертикали , но не работает.

SELECT   IC.id_arqueo,
       IC.id_detalle,
       IC.descripcion,
       IC.denominacion,
       IC.cantidad,
       IC.total,
       ID.id_arqueo,
       ID.id_detalle,
       ID.descripcion,
       ID.denominacion,
       ID.cantidad,
       ID.total 


FROM dbo.inicial_cordobas IC 
 LEFT JOIN  dbo.inicial_dolares ID 
 ON ID.id_arqueo = IC.id_arqueo 

--this query returns to me 168 rows because the join looks for coincidence and 
--one table has 14 and the other has 12 rows.

Ответы [ 2 ]

2 голосов
/ 30 сентября 2019

вам нужно row_number(), чтобы присоединиться ко второму столу.

SELECT   IC.id_arqueo,
       IC.id_detalle,
       IC.descripcion,
       IC.denominacion,
       IC.cantidad,
       IC.total,
       ID.id_arqueo,
       ID.id_detalle,
       ID.descripcion,
       ID.denominacion,
       ID.cantidad,
       ID.total 
FROM 
    (select row_number() over (order by id_detalle) rn, * from dbo.inicial_cordobas) IC 
LEFT JOIN  
    (select row_number() over (order by id_detalle) rn , * from dbo.inicial_dolares) ID 
ON ID.id_arqueo = IC.id_arqueo and IC.rn = ID.rn
0 голосов
/ 30 сентября 2019

Столбцы id_detalle также имеют отношение, которое можно выразить математически и использовать:

SELECT   IC.id_arqueo,
       IC.id_detalle,
       IC.descripcion,
       IC.denominacion,
       IC.cantidad,
       IC.total,
       ID.id_arqueo,
       ID.id_detalle,
       ID.descripcion,
       ID.denominacion,
       ID.cantidad,
       ID.total 


FROM dbo.inicial_cordobas IC 
 LEFT JOIN  dbo.inicial_dolares ID 
 ON ID.id_arqueo = IC.id_arqueo 

AND ic.id_detalle + 14 = id.id_detalle

id_detalle в ic всегда на 14 меньше, чем id_detalle в идентификаторе, поэтому мы можем сделать соединениеусловие, при котором мы добавляем 14 к значению в ic, а затем связываем его со значением в id

Это, возможно, важный момент обучения, при котором объединения не всегда должны принимать форму tableA.columnA = tableB.columnB. Все, что может быть выражено как истина, может работать как условие соединения, включая формулы и математические операции по обе стороны от =

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