我有一张用户表和一份合约表。我有两个选择。第一个,它选择所有来自用户表和第二个,它仅选择新用户(来自另一个用户表)"今天"。我需要连接这两个结果,但是存在问题。
每个用户都拥有" 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
我该怎么做?
答案 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