如何使用SQLServer2008将两个表数据合并到一个表中

如何使用SQLServer2008将两个表数据合并到一个表中,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有两张桌子 表1:tbl#u test1 id | product1 | price1| ---+----------+-------+ 1 | A | 200 | 2 | B | 250 | 3 | C | 300 | 表2:tbl#u test2 id | product2 | price2| ---+----------+-------+ 40 | P | 200 | 20 | Q | 250

我有两张桌子

表1:
tbl#u test1

id | product1 | price1|
---+----------+-------+
1  | A        | 200   |
2  | B        | 250   |
3  | C        | 300   |
表2:
tbl#u test2

id | product2 | price2|
---+----------+-------+
40 | P        | 200   |
20 | Q        | 250   |
我想得到我给定的格式

id | product1 | price1|id | product2 | price2|
---+----------+-------+---+----------+-------+
1  | A        | 200   |50 | P        | 200   |
2  | B        | 250   |40 | Q        | 250   |
3  | C        | 300   |   |          |       |

请帮助…

我不知道你的结局是什么,但如果你只是想并排显示你的数据,你需要使用
完全加入
。此外,您必须为每个表添加一个
行编号

WITH CteTest1 AS(
    SELECT *,
        rn = ROW_NUMBER() OVER(ORDER BY id)
    FROM #tbl_test1
),
CteTest2 AS(
    SELECT *,
        rn = ROW_NUMBER() OVER(ORDER BY id)
    FROM #tbl_test2
)
SELECT
    t1.id, t1.product1, t1.price1,
    t2.id, t2.product2, t2.price2
FROM CteTest1 t1
FULL JOIN CteTest2 t2
    ON t2.rn = t1.rn

这两个表之间的关系是什么,以及为什么在第二个表的结果中我们有id 50和40,而在表2中我们有id 40和20。没有RELATION@Ravi库马尔,为什么P&Q的id在tbl_test2和您的预期结果中有所不同?
declare @FirstTable table (StudentId int, SubjectId int)
declare @SecondTable table (MarksId int, RankId int, LastRank int)

insert into @FirstTable values (1, 1)
insert into @FirstTable values (1, 2)
insert into @FirstTable values (1, 3)

insert into @SecondTable values (1, 4, 10)
insert into @SecondTable values (1, 5, 11)

;with XmlTable (RowNumber, StudentId, SubjectId) as
(
    select row_number() over(order by StudentId) as RowNumber, * from @FirstTable
)
,TechnicalIdsTable (RowNumber, MarksId, RankId, LastRank) as
(
    select row_number() over(order by MarksId) as RowNumber, * from @SecondTable
)
select x.StudentId, x.SubjectId, t.MarksId, t.RankId, t.LastRank from XmlTable x 
left join TechnicalIdsTable t
on x.RowNumber = t.RowNumber