SQL Server:使用特定行连接两个结果

时间:2016-08-17 07:40:26

标签: sql sql-server

我有一张用户表和一份合约表。我有两个选择。第一个,它选择所有来自用户表和第二个,它仅选择新用户(来自另一个用户表)"今天"。我需要连接这两个结果,但是存在问题。

每个用户都拥有" rownumber"列,它取决于每个用户的合同数(每个用户可以有1个或多个合同)。我需要为新行获得新的rownumber。见例子

第一个选择返回:

user_id | contract_id | rownumber
1         456           1
1         457           2
1         699           3

第二个选择为这些用户选择新行:

user_id | contract_id
1         1024
1       | 1079

我需要连接这些结果才能获得最终结果:

user_id | contract_id | rownumber
 1         456           1
 1         457           2
 1         699           3
 1         1024          4
 1         1079          5

我该怎么做?

2 个答案:

答案 0 :(得分:2)

;with cte
as
(
select 
user_id,contractid from table1
union all
select 
user_id,contractid from table2
)
select *,row_number() over (partition by user_id order by contractid ) from cte

答案 1 :(得分:0)

select USER_ID, CONTRACT_ID,ROWNUMBER
from TABLE1 
union all
select USER_ID, CONTRACT_ID,rownum+num
from TABLE2,(select max(ROWNUMBER) as num
from TABLE1);

union all 也会显示重复的数据。如果您不想要重复记录,请将 union all 替换为 union