我想结合两个表,并在结果中,让第二个表的列偏移第一个表中该列的最大值。
示例:假设我有两个表,其中两个列具有相同的列:
表A
a | b | c
1 | 1 | 1
2 | 2 | 2
表B
a | b | c
1 | 6 | 6
2 | 7 | 7
我希望能够执行类似UNION ALL的操作,从而产生:
结果
a | b | c
1 | 1 | 1
2 | 2 | 2
3 | 6 | 6
4 | 7 | 7
通过执行实际的UNION ALL,我的结果是:
结果
a | b | c
1 | 1 | 1
2 | 2 | 2
1 | 6 | 6
2 | 7 | 7
更新:我还想把它放到VIEW中,这对我来说很复杂。
提前致谢
答案 0 :(得分:2)
您可以从表A中获取最大a
值,并将其从表B添加到列a
。
select a,b,c from tblA
union all
select a+t.max_a,b,c from tblB
cross join (select max(a) as max_a from tblA) t
答案 1 :(得分:-1)
对于两个表都需要遵循原始值,列[a]的值是什么?
select a = row_number() over (order by a), b, c
from
(
select a, b, c from tableA
union all
select a, b, c from tableB
) d
或者,使用row_number()生成tableb的序列
select a = coalesce(a, max(a) over() + row_number() over(order by a)),
b, c
from
(
select a, b, c
from tableA
union all
select a = NULL, b, c
from tableB
) d
order by a