2011-02-02 4 views
1

통합 쿼리에 대한 페이지 매김을 구현해야하지만 "메시지 102, 수준 15, 상태 1, 줄 14 근처에 잘못된 문구가 있습니다. ')'."오류가 발생합니다. 이 link에서 찾은 사례를 따랐습니다.SQL Server 2008 R2 페이지 매김

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 
+0

무슨 일이 일어나고 계십니까? 오류가 있습니까? – Axarydax

+0

오류 메시지를 포함하도록 답변을 업데이트했습니다. – newbie

+0

나는 SQL Server의 오류 위치를 결코 좋아하지 않았지만 코드에 12 행을 세고 있습니다. 붙여 넣기 않은 것이 있습니까? – donkim

답변

3

사용 :

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에서 하위 쿼리에 대한 필요성이없는 것을 나에게 보인다 그래서 나는 그들을 제거했습니다.

+0

누락 된 대괄호가 아니라 누락 된 테이블 별명 (UNION ALL subselect의 경우) 인 것처럼 보입니다. 어쨌든, 당신은 그것을 훨씬 잘 재구성했습니다. –

+0

나는 그것을 좋아한다. 'SELECT TOP (5) u. * FROM (SELECT t1.id FROM (SELECT t1.id 선택)FROM (선택 t1.id, FROM)은 페이징에 사용되는 약간의 파생물입니다. TABLE1 t1 UNION ALL SELECT t2.id FROM TABLE2 t2) as AS u WHERE u.rownum> 5 ' –

0

하위 쿼리에서 선택하는 경우 별칭을 지정해야합니다. 2 개의 외부 부속 조회가 있지만 별명은 하나만 있습니다. from Table2) as tabl2) as t) as t

1
당신은 하나의 괄호를 이동해야

:

from Table2) as table2)) as t Derivedfrom Table2) as table2) as t) Derived

당신은 또한 표 2에 표 1 및 표 2에 표를 구성하는 하위 쿼리의 일부를 제거 할 수 읽어야하지만 난 거기에 생각해야한다 거기에있는 사람들을위한 다른 reaon (더 복잡한 다른 쿼리를 기반으로 함)

+0

아니요, 실제로 더 복잡하지 않으며 조언을 통해 잘 작동합니다. – newbie

1
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 
관련 문제