我正在寻找一种窗口函数的方法:
SELECT * FROM (
SELECT name, 't1' as Src, '1' AS unionSet
FROM table1
UNION
SELECT name, 't2', '2'
FROM table2
UNION
SELECT name, 't3', '3'
FROM table3
) query
这会导致类似:
alanzo, t1, 1
alex, t1, 1
frank, t2, 2
michelle, t2, 2
steve, t2, 2
peter, t3, 3
arial, t3, 3
我希望有一个窗口函数来计算Src
的序列 - 类似于ROW_NUMBER() OVER(PARTITION BY Src ORDER BY name)
,但每次都从1开始。我不想使用unionSet
列。
希望这是有道理的!谢谢!
答案 0 :(得分:0)
SELECT query.*,
dense_rank() over(order by src) as x
FROM (
SELECT name, 't1' as Src
FROM table1
UNION
SELECT name, 't2'
FROM table2
UNION
SELECT name, 't3'
FROM table3
) query