Row_Number() продолжить в Union весь запрос

Как я могу получить инкрементный уникальный номер, если у меня есть 3 таблицы?

Например:

  • 1-й запрос row_number результат = 1,2,3
  • 2-й запрос row_number результат = 4,5,6
  • 3-й запрос row_number результат = 7,8,9

Я попробовал приведенный ниже запрос, но из него я могу получить добавочную до 2-й таблицы.

SELECT ROW_NUMBER() OVER(ORDER BY filename) AS SrNo,fileName FROM Tab1
UNION ALL
SELECT ROW_NUMBER() OVER(ORDER BY filename) + (SELECT COUNT(*) FROM tab1) AS 
SrNo, filename FROM Tab2
UNION ALL
SELECT ROW_NUMBER() OVER(ORDER BY filename) + (SELECT COUNT(*) FROM tab2) AS 
SrNo, filename FROM Tab3

каждая таблица имеет 3 записи, и я хочу получить результат row_number как 1,2,3,4,5,6,7,8,9


person A.Hemrajani    schedule 18.09.2017    source источник


Ответы (1)


Используйте подзапрос:

SELECT ROW_NUMBER() OVER (ORDER BY which, filename) as SrNo, filename
FROM (SELECT 1 as which, fileName FROM Tab1
      UNION ALL
      SELECT 2 as which, filename FROM Tab2
      UNION ALL
      SELECT 3 as which, filename FROM Tab3
     ) ttt;
person Gordon Linoff    schedule 18.09.2017