2017-05-23 6 views
-1

私はこのクエリがどのように実行されたのだろうかと思っていた:ORDER BYのSELECT TOPとDERIVED TABLEは、どのようにSybase ASEで動作しますか?

私は、エラーメッセージ "派生テーブルで許可されていないORDER BYCLUEがあります。 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:

SELECT 
    TOP 10 product AS b_fld_1 
FROM 
    bi_sales 
GROUP BY 
    product 
ORDER BY 
    sum(sales) DESC 

私は、ORDER BYとTOPの機能と派生テーブルを使用してSQLを実行する必要があります。 PHPコードを生成するための開発ソフトウェアを使用しているため、RADです。したがって、ユーザーは自分のSQLに通知する必要があります、単純または複雑にすることができます。

はの、ケースを登録しようと別のSQL複雑である「SEL1」...

はこのように、私たちは「SEL1」などのユーザーのSQLを扱うことを想像してみてください。 TOP ORDER BYで "sel2"を使って返信し、 "sel1"と "sel2"の比較JOINで新しい外部SELECTを作成します。 Sybaseのオン

は動作しません:

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

MS SQL Serverのは、MySQLやOracle、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

は、おそらくこれが何をしたいん。

関連する問題