Ich frage mich, wie diese Abfrage ausgeführt wird:Wie funktioniert SELECT TOP mit ORDER BY in DERIVED TABLE in Sybase ASE?
Ich habe die Fehlermeldung "Eine ORDER BYclause ist in einer abgeleiteten Tabelle nicht zulässig." dasselbe mit TOP.
nicht:
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
individuell SELECT Arbeit, aber funktioniert nicht in einer abgeleitete Tabelle.
ARBEIT:
SELECT
TOP 10 product AS b_fld_1
FROM
bi_sales
GROUP BY
product
ORDER BY
sum(sales) DESC
Ich brauche mit SQL abgeleitete Tabelle mit ORDER BY und TOP Funktionen auszuführen. Da ich mit Entwicklungssoftware arbeite, um PHP-Code zu generieren, handelt es sich um eine RAD. So sollte der Benutzer Ihr eigenes SQL informieren, kann einfach oder komplex sein.
Stellen Sie sich vor, dass „SEL1“, die eine andere SQL-Komplex sein kann, mit der JOIN FÄLLE ...
So haben wir den Benutzer SQL als „SEL1“ behandeln. Wir antworten mit dem TOP ORDER BY mit "sel2" und machen dann einen neuen externen SELECT mit Vergleichs-JOIN in "sel1" und "sel2".
Auf Sybase funktioniert nicht:
SELECT column FROM (SELECT top 10 column2 FROM table ORDER BY column2)
Die gleiche Aussage Arbeit auf MS SQL Server, MySQL, Oracle, MS Access, PostgreSQL, SQLite, Firebird und Informix.
Vielen Dank im Voraus für Ihre Antworten!
Was ist die Frage? – artm