Top-Themen

Aktuelle Themen (A bis Z)

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, 2204 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 ..
Ähnliche Inhalte
Datenbanken
SQL Abfrage Problem Time OUt
Frage von frankiecologneDatenbanken2 Kommentare

Hallo, kann mir jemand sagen was hier falsch ist? Bekomme ein timeOut SELECT fullname, contactid AS Kontaktid FROM FilteredContact ...

C und C++
C Sharp SQL Abfrage Problem
Frage von 115122C und C++3 Kommentare

Hallo, ich möchte in C# eine Verbindung zu einer DB/Tabelle herstellen, eine Abfrage starten und die Ergebnismenge darstellen. Das ...

PHP
Abfrage SQL
gelöst Frage von dudeldoedelPHP3 Kommentare

Hallo zusammen, kann man das in einer SQL Abfrage erreichen ??? Feldwert lautet: {"565":{"textinput":{"comment":"1400"}}} als Ergebnis soll ausgelesen werden ...

Datenbanken
SQL - Abfragen - Mehrere Tabellen - Problem WHERE-Filter
gelöst Frage von Andy1987Datenbanken12 Kommentare

Guten Morgen, ich muss mich derzeit mit SQL-Abfragen rumschlagen, um unsere Inventarisierung etwas Übersichtlicher zu gestallten. Mein Problem ist ...

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 5 StundenMikroTik RouterOS4 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 5 StundenSicherheit

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 8 StundenAdministrator.de Feedback9 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin vor 13 StundenVmware

Die VMware-Anwendungen zum Umgang mit virtuellen Maschinen Fusion, Horizon Client und Workstation sowie die Plattform NSX sind verwundbar. Davon ...

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Frage von ahstaxVisual Studio24 Kommentare

Hallo, ich möchte gerne ein vb.net-Tool schreiben, das am Ende eine Outlook-E-Mail erzeugt. Grundsätzlich ist mir klar, wie das ...

Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server16 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...