Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Group by "Datum" Problem (https://www.delphipraxis.net/155041-group-datum-problem.html)

cugar 6. Okt 2010 05:34

Datenbank: InterBase • Version: 7.5 • Zugriff über: Delphi 2006 prof.

Group by "Datum" Problem
 
Hi,
bin gerade am Suchen und finde keine Lösung für mein Problem.
Meine Tabelle enthält u.a. folgendes:

DOSENMENGE SNH_DATUM
15 15.08.2010
24 25.08.2010

11 05.09.2010

Jetzt möchte ich es nach Monaten gruppieren, InterBase meldet leider nur Fehler.

SELECT
SUM(SNH_DOSENMENGE) as DOSENMENGE, Extract (MONTH from SNH_DATUM) as MONAT
FROM SNACK_HAUPT
GROUP BY MONAT <- Fehler: was ist MONAT?
..oder GROUP BY Extract (MONTH from SNH_DATUM) <- Extract unerlaubt
Die beiden Sachen scheinen in anderen Datenbanken zu funktionieren, wie muss man es in InterBase machen??

Ich möchte wissen, wie viele Dosen in einzelnen Monaten (oder Jahren) verkauft wurden.

Viele Grüsse

Andreas Schilling 6. Okt 2010 06:33

AW: Group by "Datum" Problem
 
Ich habe das Problem bisher immer mit dem Umweg über einen View gelöst. Bei dem Select auf den View kannst du dann dein group by Monat machen.

alzaimar 6. Okt 2010 06:40

AW: Group by "Datum" Problem
 
Oder so
SQL-Code:
SELECT
     SUM(SNH_DOSENMENGE) as DOSENMENGE,
     Extract (MONTH from SNH_DATUM) as MONAT
FROM SNACK_HAUPT
GROUP BY Extract (MONTH from SNH_DATUM)

cugar 6. Okt 2010 06:46

AW: Group by "Datum" Problem
 
Danke, versuche es über View.

An alzaimar:
bzg. GROUP BY Extract (MONTH from SNH_DATUM)

Wie ich bereits oben vermerkt habe: Extract hinter Group by führt zum Fehler bei InterBase

marabu 6. Okt 2010 07:53

AW: Group by "Datum" Problem
 
Hallo cugar,

alzaimar meinte bestimmt:

SQL-Code:
SELECT
     EXTRACT (MONTH FROM snh_datum) AS monat,
     SUM(snh_dosenmenge) AS dosenmenge,
FROM snack_haupt
WHERE EXTRACT (YEAR FROM snh_datum) = :year
GROUP BY 1
ORDER BY 1 DESC
Für Auswertungen greifst Du aber trotzdem über eine VIEW auf die Daten zu - Du musst dann bei Änderungen an der Basis-Tabelle nur die View anpassen.

Grüße vom marabu

cugar 6. Okt 2010 08:18

AW: Group by "Datum" Problem
 
Geht auch nicht, Token Unknow: 1
Weiß manche Datenbanken erlauben es mit Zahlen zu machen, Interbase will nicht :)

Ich verwende DBChart und hab da es angebunden. Bei DBChart kann man es auswählen wie es gruppiert werden soll (Jahr, Monat, Woche usw), verändert DBChart für sich irgendwie die SQL-Anweisung(denn da wird es richtig angezeigt)?

mkinzler 6. Okt 2010 08:28

AW: Group by "Datum" Problem
 
Welches 1 mahnt er an?
@Achim: Welcome back!

cugar 6. Okt 2010 08:31

AW: Group by "Datum" Problem
 
Zeile 6
GROUP BY 1

mkinzler 6. Okt 2010 08:44

AW: Group by "Datum" Problem
 
Versuch es mal mit einer Derived Table:
SQL-Code:
SELECT
    s.monat,
    Sum(s.snh_dosenmenge) as dosenmenge
from
    (
        select    
            EXTRACT (MONTH FROM snh_datum) AS monat,
            EXTRACT (YEAR FROM snh_datum) as jahr
            snh_dosenmenge
        FROM
            snack_haupt) s
WHERE
    s.jahr = :year
GROUP BY
    monat
ORDER BY
    Monat DESC;

marabu 6. Okt 2010 08:52

AW: Group by "Datum" Problem
 
Tatsächlich unterstützt auch das aktuelle Interbase noch keine Spaltennummern in der GROUP BY Klausel, wohl aber in der ORDER BY Klausel:

Zitat:

order_list =
{col | int} [COLLATE collation]
[ASC[ENDING] | DESC[ENDING]]
[, order_list ...]
Schade eigentlich.

@Markus: :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:42 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz