首页 > 解决方案 > 垂直联合列sql server

问题描述

我有两个表具有相同的列编号和名称,我想加入它的列。

我有这张名为 inical_dolares 的表

这是我的第一张表,名为 inical_dolares

并有另一个名为 inical_cordobas 的表

这是我的第一张表,名为 inical_dolares

我正在寻找这个结果

在此处输入图像描述

我试过用连接来做到这一点,但不起作用。公共列是 id_arqueo 是一个整数。我尝试了这个SQL union 但垂直 但不起作用。

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.

标签: sqlsql-servertsql

解决方案


你需要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

推荐阅读