SQL Server 2008 R2 нумерация страниц - PullRequest
1 голос
/ 02 февраля 2011

Мне нужно реализовать разбиение на страницы для моего запроса объединения, но я получаю сообщение об ошибке "Msg 102, Level 15, State 1, Line 14 Неверный синтаксис рядом с ')'.".Я следовал примеру, найденному по этой ссылке .

select * 
  from (select Id, 
               row_number() OVER (order by Id asc) as RowNumber 
          from (select Id 
                  from (select Id 
                          from Table1) as table1 
                union all 
                select Id 
                  from (select Id 
                          from Table2) as table2)) as t Derived 
  WHERE RowNumber > 5 
    and RowNumber <= 10

Ответы [ 4 ]

3 голосов
/ 02 февраля 2011

Использование:

SELECT u.* 
  FROM (SELECT t.id, 
               ROW_NUMBER() OVER (ORDER BY t.id) as rownum 
          FROM (SELECT t1.id 
                  FROM TABLE1 t1
                UNION ALL 
                SELECT t2.id 
                  FROM TABLE2 t2) as t) AS u
 WHERE u.rownum > 5 
   AND u.rownum <= 10

Мне кажется, что в вашем запросе отсутствует закрывающая скобка для производной таблицы, называемой "производной", но в UNION не было необходимости в подзапросах, поэтому я удалил их.

1 голос
/ 02 февраля 2011
select * 
  from (select Id, 
               row_number() OVER (order by Id asc) as RowNumber 
          from (select Id 
                  from Table1 as table1 
                union all 
                select Id 
                  from Table2)p)t 
  WHERE RowNumber > 5 
    and RowNumber <= 10
1 голос
/ 02 февраля 2011

Вам просто нужно переместить одну скобку:

from Table2) as table2)) as t Derived должно читаться как from Table2) as table2) as t) Derived

Вы также можете удалить некоторые из подзапросов, которые превращают Table1 в table1, а Table2 - в table2, ноЯ предполагаю, что для них есть какая-то другая причина (например, это основано на другом более сложном запросе)

0 голосов
/ 02 февраля 2011

Если вы выбираете из подзапроса, вы должны указать для него псевдоним. У вас есть 2 внешних подзапроса, но только один с псевдонимом. Должно быть: from Table2) as tabl2) as t) as t

...