![]() |
Datenbank: Firbird • Version: 1.5 • Zugriff über: Fibplus
SQL Problem
Hallo zusammen
SQL-Code:
kann mir jemand sagen wieso GROUP BY BIBLE_TYPE nicht geht?
SELECT D_DATE, BIBLE_TYPE, AMOUNT
FROM NURSING_H_DD INNER JOIN NURSING_H_D ON (NURSING_H_DD.ID_D = NURSING_H_D.ID) WHERE D_DATE BETWEEN '01.01.2000' AND '01.01.2008' GROUP BY BIBLE_TYPE erhalte immer folgende Fehlermeldung: Invalid token. Dynamic SQL Error. SQL error code = -104. Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause). Danke für Eure Tips Shalom Manfred |
Re: SQL Problem
Beim Aufsummieren über GROUP BY darf man nur Aggregat-Funktionen wie SUM(), COUNT, AVRG() oder MAX() verwenden.
Hier eine fehlerfreie Abfrage:
SQL-Code:
Das Datumsfeld habe ich entfernt, da beim Aufsummieren das Datum zwangsläufig entfallen muss.
SELECT BIBLE_TYPE, SUM(AMOUNT) AS SumAMOUNT
FROM NURSING_H_DD INNER JOIN NURSING_H_D ON (NURSING_H_DD.ID_D = NURSING_H_D.ID) WHERE D_DATE BETWEEN '01.01.2000' AND '01.01.2008' GROUP BY BIBLE_TYPE Wenn das Datum trotzdem erscheinen soll, dann sieht es so aus:
SQL-Code:
SELECT BIBLE_TYPE, D_DATE, SUM(AMOUNT) AS SumAMOUNT
FROM NURSING_H_DD INNER JOIN NURSING_H_D ON (NURSING_H_DD.ID_D = NURSING_H_D.ID) WHERE D_DATE BETWEEN '01.01.2000' AND '01.01.2008' GROUP BY BIBLE_TYPE, D_DATE |
Re: SQL Problem
Eine Aggregatfunktion (SUM, MAX usw.) ist nirgends zu sehen. Ins GroupBy gehören alle anderen Felder !
|
Re: SQL Problem
Besten Dank Euch :cheers:
es geht Shalom Manfred |
Re: SQL Problem
Hallo,
wie ich das so sehe, sollte man hier einfach GROUP BY 1 nehmen. Gruß Ralf |
Re: SQL Problem
Zitat:
|
Re: SQL Problem
Zitat:
Möglich, dass manche DBMS das auch auf GROUP BY ausdehnen aber das wäre nicht Standard. |
Re: SQL Problem
Hallo,
hab es tatsächlich mit ORDER BY verwechselt, aber es funktioniert zumindest mit Firebird tatsächlich (habe es eben mit IBExpert auf die Schnelle getestet). Auch so lernt man dazu. Gruß Ralf |
Re: SQL Problem
Zitat:
Sonst macht das Ganze keinen Sinn, woher soll das DBMS sonst wissen, was es herausfiltern soll? Ich habs jetzt nicht ausprobiert, aber ich denke bei dem angegebenen SQL könnte ein
SQL-Code:
möglich sein.
GROUP BY 1, 2, 3
Gruß Thomas |
Re: SQL Problem
So ist es wohl. Habe es nur mit so etwas probiert:
select avg(preis), gruppe from verkaufsartikel group by 2 Gruß Ralf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz