Hallo Liebe Gemeinde, ich bin neu hier im Forum und muss sagen ich habe mit SQL bis jetzt nicht al zu viel Erfahrung gemacht. Das meiste was ich bis jetzt mit SQL gemacht habe, waren Query's die ich direkt über eine C# Programm gesendet/abgefragt habe und dann die Daten direkt über die Anwendung verarbeitet/ausgewertet. Jetzt brauche ich aber eine Abfrage die über eine Externe Schnittstelle einer anderen Anwendung verarbeitet wird und mir dann die Daten zurück liefert. Hier komme ich aber nicht weiter.
in der Tabelle sind unter anderem Folgende Felder Datumvon, Datumbis, Konto, PersonNummer, Wert
Beispiel:
Ich möchte jetzt eine SQL Anweisung zusammen bauen die mir dann doppelte Einträge zu einer PersonNummer und gleichen Konto summiert welche innerhalb eines Datum Bereiches liegen.
Mit dieser Anweisung bekomme ich zwar die DAten aber nicht die Felder Summiert,
SELECT PZSTAMM.PNR,
case when DATEPART(YEAR, Q1.DATVON) is not null then DATEPART(YEAR, Q1.DATVON) else DATEPART(YEAR, Q2.DATVON) end as ABRJAHR,
case when DATEPART(MONTH, Q1.DATVON) is not null then DATEPART(MONTH, Q1.DATVON) else DATEPART(MONTH, Q2.DATVON) end as ABRMONAT,
case when Q1.KTONR is not null then Q1.KTONR else Q2.KTONR end as Konto,
INTNR,
case when sum(Q1.NETTO) is not null then sum(Q1.NETTO) else 0 end as UTAGE,
case when sum(Q2.NETTO) is not null then sum(Q2.NETTO) else 0 end as KTAGE
from PZSTAMM
left outer join PZFEZEIT as Q1 on Q1.PNR = PZSTAMM.PNR and Q1.KTONR = 13 and Q1.DATVON BETWEEN DateAdd(m, -1, '15.03.2019') AND CONVERT(datetime, '15.03.2019', 104)
left outer join PZFEZEIT as Q2 on Q2.PNR = PZSTAMM.PNR and Q2.KTONR = 11 and Q2.DATVON BETWEEN DateAdd(m, -1, '15.03.2019') AND CONVERT(datetime, '15.03.2019', 104)
where (PZSTAMM.ZE=1) and PZSTAMM.PNR in (select PNR from PZFEZEIT where DATVON BETWEEN DateAdd(m, -1, '15.03.2019') AND CONVERT(datetime, '15.03.2019', 104) and KTONR in (13,11))
GROUP By PZSTAMM.PNR, Q1.DATVON, Q2.DATVON, INTNR, Q1.KTONR, Q2.KTONR
Nachtrag:
Das Ergebnis was ich benötige oder wie es aussehen sollte:
Felder ABJAHR, ABRMONAT, UTAGE, KTAGE,
Daten: 2019, 3, 4, 1
also zu einem Datumbereich von/bis alle Wert-Daten zu dem jeweiligen Konto zusammen addieren.
UTAGE wäre Konto 11 (Wert = 4)
KTAGE wäre Konto 13
Geht das überhaupt über ein SQL Script? Wenn ja wo ist mein Denkfehler.
Vielen Dank und Grüße
in der Tabelle sind unter anderem Folgende Felder Datumvon, Datumbis, Konto, PersonNummer, Wert
Beispiel:
DATVON | Datumbis | Konto | PNR | Netto |
2019-03-10 00:00:000 | 2019-03-13 00:00:000 | 11 | 14 | 1 |
2019-03-11 00:00:000 | 2019-03-13 00:00:000 | 11 | 14 | 3 |
2019-03-09 00:00:000 | 2019-03-09 00:00:000 | 13 | 14 | 1 |
Ich möchte jetzt eine SQL Anweisung zusammen bauen die mir dann doppelte Einträge zu einer PersonNummer und gleichen Konto summiert welche innerhalb eines Datum Bereiches liegen.
Mit dieser Anweisung bekomme ich zwar die DAten aber nicht die Felder Summiert,
SELECT PZSTAMM.PNR,
case when DATEPART(YEAR, Q1.DATVON) is not null then DATEPART(YEAR, Q1.DATVON) else DATEPART(YEAR, Q2.DATVON) end as ABRJAHR,
case when DATEPART(MONTH, Q1.DATVON) is not null then DATEPART(MONTH, Q1.DATVON) else DATEPART(MONTH, Q2.DATVON) end as ABRMONAT,
case when Q1.KTONR is not null then Q1.KTONR else Q2.KTONR end as Konto,
INTNR,
case when sum(Q1.NETTO) is not null then sum(Q1.NETTO) else 0 end as UTAGE,
case when sum(Q2.NETTO) is not null then sum(Q2.NETTO) else 0 end as KTAGE
from PZSTAMM
left outer join PZFEZEIT as Q1 on Q1.PNR = PZSTAMM.PNR and Q1.KTONR = 13 and Q1.DATVON BETWEEN DateAdd(m, -1, '15.03.2019') AND CONVERT(datetime, '15.03.2019', 104)
left outer join PZFEZEIT as Q2 on Q2.PNR = PZSTAMM.PNR and Q2.KTONR = 11 and Q2.DATVON BETWEEN DateAdd(m, -1, '15.03.2019') AND CONVERT(datetime, '15.03.2019', 104)
where (PZSTAMM.ZE=1) and PZSTAMM.PNR in (select PNR from PZFEZEIT where DATVON BETWEEN DateAdd(m, -1, '15.03.2019') AND CONVERT(datetime, '15.03.2019', 104) and KTONR in (13,11))
GROUP By PZSTAMM.PNR, Q1.DATVON, Q2.DATVON, INTNR, Q1.KTONR, Q2.KTONR
Nachtrag:
Das Ergebnis was ich benötige oder wie es aussehen sollte:
Felder ABJAHR, ABRMONAT, UTAGE, KTAGE,
Daten: 2019, 3, 4, 1
also zu einem Datumbereich von/bis alle Wert-Daten zu dem jeweiligen Konto zusammen addieren.
UTAGE wäre Konto 11 (Wert = 4)
2019-03-10 00:00:000 | 2019-03-13 00:00:000 | 11 | 14 | 1 |
2019-03-11 00:00:000 | 2019-03-13 00:00:000 | 11 | 14 | 3 |
KTAGE wäre Konto 13
2019-03-09 00:00:000 | 2019-03-09 00:00:000 | 13 | 14 | 1 |
Geht das überhaupt über ein SQL Script? Wenn ja wo ist mein Denkfehler.
Vielen Dank und Grüße
Comment