在单个表中显示两个临时表数据

时间:2019-07-03 10:03:16

标签: sql sql-server

我在SQL服务器中有一个临时表,其数据如下所示

表1

**Data** 
ISD-I987330
PSD-I987330
KSD-I987330
JSD-I987330
RSD-I987330
QSD-I987330
QSD-I987359

还有另一个临时表,其数据如下所示:

表2

**Data**
BRA-22310
BRA-22319
BRA-22316
BRA-22313
BRA-22317

我试图将这两个表的数据显示在一个表中。就像下面的

enter image description here

但是我正在获得交叉联接数据。

下面是我的查询

declare @TempResults table
(


    Tickets1    varchar(50),  
    Tickets2    varchar(50)
)

insert into @TempResults 
Select distinct ti.Tickets1,
tr.Tickets2
FROM @Table1 ti,@table2 tr

select * from  @TempResults 

3 个答案:

答案 0 :(得分:3)

没有每个表都有单独的列来维护每个表中每个记录的 order ,就无法真正获得所需的输出。如果没有,我们可以使用ROW_NUMBER生成订单,然后加入:

WITH cte1 AS (
    SELECT Data, ROW_NUMBER() OVER (ORDER BY Data) rn
    FROM Table1
),
cte2 AS (
    SELECT Data, ROW_NUMBER() OVER (ORDER BY Data) rn
    FROM Table2
)

SELECT
    t1.Data,
    t2.Data
FROM cte1 t1
FULL OUTER JOIN cte2 t2
    ON t1.rn = t2.rn;

答案 1 :(得分:0)

您可以使用row_number()

加入
  with cte1 as 
    (select *,row_number() over(order by data) rn
    from table1
    ),
    cte2 as
    (
    select *,row_number() over(order by data) rn
    ) select cte1.data,cte2.data from cte1 left join ct2 on cte1.rn=cte2.rn

答案 2 :(得分:0)

最基本的解决方案(但不一定是最好的解决方案)是在临时表中合并表,并为每个列使用不同的名称

select * Into @TempResults  From
(
   SELECT  ti.Tickets1 as 'Tickets1',' ' as 'Tickets2'
   FROM @Table1 ti
   UNION
   SELECT ' ' as 'Tickets1',  tr.Tickets2 as 'Tickets2'
   FROM @table2 tr
) T