AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL-Code für Summe nach Jahr
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-Code für Summe nach Jahr

Ein Thema von BlueStarHH · begonnen am 3. Jun 2005 · letzter Beitrag vom 3. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
848 Beiträge
 
Delphi 11 Alexandria
 
#1

SQL-Code für Summe nach Jahr

  Alt 3. Jun 2005, 12:43
Datenbank: Paradox • Zugriff über: TTable, TDataSource, TQuery
Ich habe eine Paradox-Tabelle die u.a. folgende Felder hat (mit Beispieldaten):

Verkaufsdatum, Menge
01.07.1998, 2
12.08.1998, 5
06.08.2000, 1
25.12.2000, 3

Nun möchte daraus folgendes erhalten:

Jahr, Summe
1998, 7
2000, 4

Die Menge soll also nach Jahr aufsummiert werden. Wie mache ich das mit SQL?

Mein erster Versuch war:

select cast(extract (year from Verkaufsdatum) as character(4)), sum(Menge) from tabelle group by Verkaufsdatum Das meckert die Delphi aber mit einer Exception der Klasse EDBEngineError an. Meldung: 'Ausdrücke in "group by" werden nicht unterstützt.'
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: SQL-Code für Summe nach Jahr

  Alt 3. Jun 2005, 13:05
select cast(extract (year from Verkaufsdatum) as character(4)), sum(Menge) from tabelle group by cast(extract (year from Verkaufsdatum) as character(4)) Aber nur vielleicht
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: SQL-Code für Summe nach Jahr

  Alt 3. Jun 2005, 13:06
Versuch es mal so:
select cast(extract (year from Verkaufsdatum) as character(4)), sum(Menge) from tabelle group by 1 Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
848 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SQL-Code für Summe nach Jahr

  Alt 3. Jun 2005, 13:08
Zitat von mikhal:
Versuch es mal so:
select cast(extract (year from Verkaufsdatum) as character(4)), sum(Menge) from tabelle group by 1
Exception: "Merkmal nicht verfügbar"
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
848 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: SQL-Code für Summe nach Jahr

  Alt 3. Jun 2005, 13:09
Zitat von jim_raynor:
select cast(extract (year from Verkaufsdatum) as character(4)), sum(Menge) from tabelle group by cast(extract (year from Verkaufsdatum) as character(4))
Exception: "Merkmal nicht verfügbar"
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
678 Beiträge
 
Delphi 12 Athens
 
#6

Re: SQL-Code für Summe nach Jahr

  Alt 3. Jun 2005, 13:16
select cast(extract (year from Verkaufsdatum) as character(4)) as JAHR, sum(Menge) as Menge from tabelle group by JAHR ?
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: SQL-Code für Summe nach Jahr

  Alt 3. Jun 2005, 13:16
Zitat von BlueStarHH:
Die Menge soll also nach Jahr aufsummiert werden. Wie mache ich das mit SQL?
Mit SQL sicher kein Problem - Paradox unterstützt aber nur einen SQL-Dialekt (local sql) und der lässt nur echte Tabellenfelder in der GROUP BY Klausel zu. Du wirst deine Tabelle um ein Feld Jahr erweitern und dieses Feld mit UPDATE tabelle SET jahr = EXTRACT(YEAR FROM datum) initialisieren müssen, fürchte ich.

Zitat von Borland:
Der GROUP-BY-Klausel wird eine Liste mit Spalten übergeben, die jeweils durch ein Komma voneinander getrennt sind. Jede in dieser Liste aufgeführte Spalte muß folgende Kriterien erfüllen:
  • Sie muß sich in einer der Tabellen befinden, die in der FROM-Klausel der Abfrage angegeben wurden.
  • Ebenso muß sie in der SELECT-Klausel der Abfrage aufgeführt sein.
  • Es darf (in der SELECT-Klausel) keine Aggregatfunktion auf sie angewendet werden.
Grüße vom marabu
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
848 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: SQL-Code für Summe nach Jahr

  Alt 3. Jun 2005, 13:25
Zitat von joachimd:
select cast(extract (year from Verkaufsdatum) as character(4)) as JAHR, sum(Menge) as Menge from tabelle group by JAHR ?
Exception: "Ungültiger Feldname 'Jahr'"

Danke an alle für die Antworten. Wie von marabu geschrieben, ist mit Paradox da wohl leider nicht viel zu machen, ohne dass man eine neue Spalte "Jahr" einrichtet.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9

Re: SQL-Code für Summe nach Jahr

  Alt 3. Jun 2005, 13:30
Warum so kompliziert ? Mit Cast und sonstigem Firlefanz ? Ihr denkt genau verkehrt rum. 8)

select sum (Menge) from Tabelle where extract (year from Verkausdatum)=2005 Ob das Paradox hergibt weiß ich allerdings nicht. Bei meiner DB (Firebird 1.5) ging das aber. Zumindest ist kein Extra-Feld für das Jahr notwendig. Man darf auch nur in der Where-Klausel kein SUM usw. benutzen. Extract gehört da aber nicht dazu.
Gruß
Hansa
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
848 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: SQL-Code für Summe nach Jahr

  Alt 3. Jun 2005, 13:51
Zitat von Hansa:
Warum so kompliziert ? Mit Cast und sonstigem Firlefanz ? Ihr denkt genau verkehrt rum. 8)

select sum (Menge) from Tabelle where extract (year from Verkausdatum)=2005 Ob das Paradox hergibt weiß ich allerdings nicht. Bei meiner DB (Firebird 1.5) ging das aber. Zumindest ist kein Extra-Feld für das Jahr notwendig. Man darf auch nur in der Where-Klausel kein SUM usw. benutzen. Extract gehört da aber nicht dazu.
Das funktioniert zwar mit Paradox, ist aber nicht das was ich haben möchte. Denn es gibt nur die Summe für 2005 zurück. Ich möchte in der Ergebnistabelle aber die Summe für alle Jahre haben, die in der DB sind.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:07 Uhr.
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