Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Neues Problem mit SQL Abfrage

Frage Entwicklung PHP

Mitglied: datadexx

datadexx (Level 1) - Jetzt verbinden

01.11.2012 um 17:15 Uhr, 2141 Aufrufe, 8 Kommentare

Hi Leutz,

benötige mal wieder hilfe bei einer SQL Abfrage:

Ich habe in der Tabelle rechnung die Felder kd_nummer, rgdatum und netto.

Jetzt möchte ich gerne folgendes Ergebnis haben:

Kundennummer Umsatz Monat Umsatz Jahr
10000 5.119,39 € 15.777,32 €
10001 xxx xxx
10002 xxx xxx

usw.

Wie bekommt man es hin, das ich in einer Abfrage die summe des Feldes netto für den aktuellen Monat und gleichzeitig die Gesamtsumme für das Jahr für die jeweilige Kundennummer erhalte?

Danke für Hilfe!

Mitglied: datadexx
01.11.2012 um 18:06 Uhr
Mein Ansatz sieht so aus, jedoch bekomme ich für Monat und Jahr die Summen aller Kunden und nicht bezogen auf den jeweiligen Kunden.

SELECT KD_NUMMER,
(SELECT SUM(Netto) FROM rechnung WHERE MONTH(RGDatum)=10 AND status !=3 AND GS !=1 ) AS Monat,
(SELECT SUM(Netto) FROM rechnung WHERE YEAR(RGDatum)=2012 AND status !=3 AND GS !=1 ) AS Jahr
FROM rechnung
GROUP BY 1
ORDER BY 1 DESC
Bitte warten ..
Mitglied: LianenSchwinger
01.11.2012 um 20:54 Uhr
Hallo,

in Oracle würde ich das so lösen:
01.
SELECT kd_nummer, 
02.
       SUM(DECODE(EXTRACT(MONTH FROM rgdatum),EXTRACT(MONTH FROM SYSDATE),netto,0)) SumAktMontat, 
03.
       SUM(netto) SumJahr 
04.
FROM rechnung 
05.
WHERE rgdatum >= TRUNC(SYSDATE,'YYYY') 
06.
AND status != 3  
07.
AND gs != 1 
08.
GROUP BY kd_nummer 
09.
ORDER BY kd_nummer
Den DECODE Teil macht nur "wenn Rechnungsmonat = aktueller Monat dann summiere Netto sonst 0.
Wenn ich das richtig sehe kannst Du den Extract(..) durch MONTH(rgdatum) ersetzen.
Mit dem 1. Teil der WHERE-Klausel selektiert nur die Rechnungen des aktuellen Jahres.
Dafür könntest Du auch "YEAR(rgdatum) = YEAR(SYSDATE)" schreiben.

Demnach musst Du nur noch was finden um den DECODE nachzubilden.
01.
SELECT kd_nummer, 
02.
       SUM("wenn" DECODE(MONTH(rgdatum) = MONTH(SYSDATE) "dann" netto "sonst" 0) SumAktMontat, 
03.
       SUM(netto) SumJahr 
04.
FROM rechnung 
05.
WHERE YEAR(rgdatum) = YEAR(SYSDATE) 
06.
AND status != 3  
07.
AND gs != 1 
08.
GROUP BY kd_nummer 
09.
ORDER BY kd_nummer
Gruß Jörg
Bitte warten ..
Mitglied: nxclass
01.11.2012 um 22:33 Uhr
für mysql:
01.
SELECT t.kd_nummer, SUM(m.netto) AS 'month', SUM(y.netto) AS 'year' 
02.
FROM table t 
03.
  JOIN table m ON (t.kd_nummer = m.kd_nummer) 
04.
  JOIN table y ON (t.kd_nummer = y.kd_nummer) 
05.
WHERE 
06.
  ( MONTH(m.rgdatum) = MONTH(NOW()) AND YEAR(m.rgdatum) = YEAR(NOW()) ) AND 
07.
  YEAR(y.rgdatum) = YEAR(NOW()) 
08.
GROUP BY t.kd_nummer
... beachte die joins - 3 mal über die selbe Tabelle
Bitte warten ..
Mitglied: datadexx
01.11.2012 um 23:13 Uhr
Hi Jörg, hi nxclass,

Jörg mit deiner Variante werde ich mich morgen auseinander setzen, da hab ich heute keinen kopf mehr für...

@nxclass

Deinen Code hab ich gerade probiert, da es schnell via copy & paste ging, nur kurz table gegen die richtige table ausgetauscht. Mysql liefert ein leeres resultat???

Danke erst mal für eure hilfe, aber für heut hab ich genug .

Schau morgen wieder rein!

G8
Bitte warten ..
Mitglied: LianenSchwinger
02.11.2012, aktualisiert um 08:44 Uhr
Morgen,

hier meine Variante für MySQL

01.
SELECT kd_nummer,  
02.
       SUM(IF(MONTH(rgdatum) = MONTH(NOW()), netto, 0)) AS SumAktMontat,  
03.
       SUM(netto) AS SumJahr  
04.
FROM rechnung  
05.
WHERE YEAR(rgdatum) = YEAR(NOW())  
06.
AND status != 3   
07.
AND gs != 1  
08.
GROUP BY kd_nummer  
09.
ORDER BY kd_nummer
Gruß Jörg
Bitte warten ..
Mitglied: nxclass
02.11.2012 um 09:31 Uhr
... ja meins geht natürlich nicht - war schon etwas spät gestern.
LianenSchwinger hat die Lösung.
Bitte warten ..
Mitglied: Biber
02.11.2012 um 09:39 Uhr
Moin datatexx,

Zitat von datadexx:
@nxclass

Deinen Code hab ich gerade probiert, da es schnell via copy & paste ging,
nur kurz table gegen die richtige table ausgetauscht.
Mysql liefert ein leeres resultat???
Nicht weiter erstaunlich, da die Zeit unaufhaltsam voranschreitet.
Inzwischen würde bei MONTH(m.rg_datum)=MONTH(NOW()) auf den Monat 11 = November verglichen, und da hast du keine Daten.

Teste mit festen Werten 10 für Oktober (Test Monat) und 2012 für Jahr.

Grüße
Biber
Bitte warten ..
Mitglied: datadexx
02.11.2012 um 11:07 Uhr
Danke Jungs!

Jörg hatte die Lösung!

@Biber, das hatte ich gestern auch gemacht, da 11 ja keine Daten liefern konnte.

Nice WE!!!
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Datenbanken
SUM oder AVG in SQL Abfrage dauert viel zu lange warum? (5)

Frage von samet22 zum Thema Datenbanken ...

Datenbanken
gelöst SQL-Abfrage mit MAX() (9)

Frage von FrAmEr zum Thema Datenbanken ...

Datenbanken
gelöst Schleifen in SQL-Abfrage bei 2 Tabellen (2)

Frage von Aximand zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...