计算查询中的联合数量

时间:2014-10-10 00:01:35

标签: sql tsql

我正在寻找一种窗口函数的方法:

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列。

希望这是有道理的!谢谢!

1 个答案:

答案 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