2017-05-23 14 views
-1

이 쿼리가 어떻게 실행되는지 궁금합니다 :ORDER BY가있는 SELECT TOP과 DERIVED TABLE은 Sybase ASE에서 어떻게 작동합니까?

"파생 테이블에서 ORDER BY 절을 사용할 수 없습니다."라는 오류 메시지가 나타납니다. TOP을 사용하여 동일 함. 개별적으로

SELECT 
    count(*), 
    sum(a_metric_1), 
    a_fld_1 
FROM 
    (
     SELECT 
      sales AS a_metric_1, 
      product AS a_fld_1 
     FROM 
      bi_sales 
    ) sel1 
INNER JOIN (
    SELECT 
     TOP 10 product AS b_fld_1 
    FROM 
     bi_sales 
    GROUP BY 
     product 
    ORDER BY 
     sum(sales) DESC 
) sel2 ON sel1.a_fld_1 = sel2.b_fld_1 
GROUP BY 
    a_fld_1 
ORDER BY 
    a_fld_1 

SELECT의 일을하지만, 파생 테이블에서 작동하지 않습니다 :

가 작동하지.

WORK :

내가 BY 및 TOP 기능 ORDER과 파생 테이블을 사용하여 SQL을 실행해야
SELECT 
    TOP 10 product AS b_fld_1 
FROM 
    bi_sales 
GROUP BY 
    product 
ORDER BY 
    sum(sales) DESC 

. PHP 코드를 생성하는 개발 소프트웨어를 사용하기 때문에 RAD입니다. 따라서 사용자는 자신의 SQL을 알려야하며 간단하거나 복잡 할 수 있습니다.

는의, 케이스 가입과 다른 SQL 복잡 할 수있다 "SEL1"...

따라서, 우리는 "SEL1"와 같이 사용자의 SQL을 치료하는 것을 상상해보십시오. 우리는 "sel2"와 함께 TOP ORDER BY를 사용하여 응답 한 다음 "sel1"및 "sel2"에 비교 JOIN이있는 새로운 외부 SELECT를 작성합니다. 베이스에

가 작동하지 않습니다 :

SELECT column FROM (SELECT top 10 column2 FROM table ORDER BY column2) 

MS SQL 서버, MySQL은, 오라클, MS 액세스, PostgreSQL을, SQLite는, 파이어 버드 및 Informix에 같은 문 작동합니다.

답장을 보내 주셔서 감사합니다. 그것은 훨씬 간단

SELECT TOP 10 product AS b_fld_1, SUM(sales), COUNT(*) 
FROM bi_sales 
GROUP BY product 
ORDER BY sum(sales) DESC; 

: 귀하의 경우

+1

무엇이 질문입니까? – artm

답변

0

는, 아마도 이것은 당신이 원하는 않습니다.