我在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
我试图将这两个表的数据显示在一个表中。就像下面的
但是我正在获得交叉联接数据。
下面是我的查询
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
答案 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