Anfänger Frage Summenspalte nach Kenner filtern und ausgeben

ewc1111

Benutzer
Beiträge
20
Hallo an die Profis hier...bin gerade dabei ein SSIS Paket zu stricken was verflucht nach Vorgaben aussehen sollen..bzw das Ergebniss was rauskommen soll. Nun hänge ich noch einer Kleinigkeit wo ich nicht weiß wie ich das lösen kann, Ich habe 2 Tabellen in denen ich mit 2 Spalten eine Summe bilde das ist ja nicht so schwer..aber jetzt kommt es..es gibt einen Kenner der entweder H oder S heisst. Soweit so gut..hier mal die Abfrage wo ich nicht weiterkomme...
SELECT SUM(Export_Fibu_20.[Spalte10.20]) AS Betrag_Habenbuchung, SUM(Export_Fibu_10.[Spalte19.10]) AS [Gesamtbetrag Belegwährung]
FROM Export_Fibu_10 INNER JOIN
Export_Fibu_20 ON Export_Fibu_10.[Spalte6.10] = Export_Fibu_20.[Spalte6.20]
Als Ergebniss soll rauskommen:
Betrag_Habenbuchung|Gesamtbetrag_Belegwährung| Sollbuchung

So und nun gibt es die Spalte [9.20] wo unterschieden wird ob H oder S...also muss ich einmal abfragen nach dem Kenner H und nach dem Kenner S damit mir die Sollbuchung gefüllt wird. Wäre dankbar wenn Ihr mir hier weiterhelfen könntet...
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.028
Hallo an die Profis hier...bin gerade dabei ein SSIS Paket zu stricken was verflucht nach Vorgaben aussehen sollen..bzw das Ergebniss was rauskommen soll. Nun hänge ich noch einer Kleinigkeit wo ich nicht weiß wie ich das lösen kann, Ich habe 2 Tabellen in denen ich mit 2 Spalten eine Summe bilde das ist ja nicht so schwer..aber jetzt kommt es..es gibt einen Kenner der entweder H oder S heisst. Soweit so gut..hier mal die Abfrage wo ich nicht weiterkomme...
SELECT SUM(Export_Fibu_20.[Spalte10.20]) AS Betrag_Habenbuchung, SUM(Export_Fibu_10.[Spalte19.10]) AS [Gesamtbetrag Belegwährung]
FROM Export_Fibu_10 INNER JOIN
Export_Fibu_20 ON Export_Fibu_10.[Spalte6.10] = Export_Fibu_20.[Spalte6.20]
Als Ergebniss soll rauskommen:
Betrag_Habenbuchung|Gesamtbetrag_Belegwährung| Sollbuchung

So und nun gibt es die Spalte [9.20] wo unterschieden wird ob H oder S...also muss ich einmal abfragen nach dem Kenner H und nach dem Kenner S damit mir die Sollbuchung gefüllt wird. Wäre dankbar wenn Ihr mir hier weiterhelfen könntet...


Das tippe ich je schneller als ich Deinen text da lese ...

Code:
test=*> select * from ewc;
kenner | betrag
--------+--------
h      |    10
h      |      5
s      |      3
s      |      4
h      |      2
(5 rows)

test=*> select sum(case when kenner = 'h' then betrag else 0 end) as habenbuchung, sum(betrag) as gesamt, sum(case when kenner = 's' then betrag else 0 end) as sollbuchung from ewc;
habenbuchung | gesamt | sollbuchung
--------------+--------+-------------
          17 |    24 |          7
(1 row)
 

ewc1111

Benutzer
Beiträge
20
akretschmer..Du bist ein GOTT ;-) Danke so funzt das..sorry wie gesagt bin erst seit kurzer Zeit dabei mit SQL überhaupt was zu machen. Vielen Dank...:)
 

ewc1111

Benutzer
Beiträge
20
So ich habe da noch ein kleines Problem was mich echt zum verzweifeln bringt..dank akretschmer bin ich schon echt weit gekommen, aber diese Abfrage ärgert mich nun immens..es geht hier noch um die Spalte Export_Fibu_10.[Spalte1.10]) : hier liefert mir die Abfrage Anzahl 7 Stück ...obwohl in der Tabelle Fibu_10 nur 5 Datensätze vorhanden sind ..die Anzahl holt sich das Teil wohl aus der anderen Tabelle Fibu_20 ..hier sind 7 Zeilen drinnen die Positionen. was mache ich falsch ? Dank im voraus für eine erneute Hilfe der Profis hier ;-)

SELECT SUM(CASE WHEN Export_Fibu_20.[Spalte9.20] = 'H' THEN [dbo].[Export_Fibu_20].[Spalte10.20] ELSE 0 END) AS habenbuchung,
SUM(CASE WHEN Export_Fibu_20.[Spalte9.20] = 'S' THEN [dbo].[Export_Fibu_20].[Spalte10.20] ELSE 0 END) AS sollbuchung, SUM(Export_Fibu_10.[Spalte19.10])
AS Gesamt, COUNT(Export_Fibu_10.[Spalte1.10]) AS Anzahl, COUNT(Export_Fibu_10.[Spalte1.10]) AS Seiten
FROM Export_Fibu_20 INNER JOIN
Export_Fibu_10 ON Export_Fibu_20.[Spalte6.20] = Export_Fibu_10.[Spalte6.10]
 

akretschmer

Datenbank-Guru
Beiträge
9.028
So ich habe da noch ein kleines Problem

Durch den inner join bekommst die Anzahl der Datensätze, die übereinstimmen. Beispiel, beachte in t2 ist 1 und 2 doppelt:

Code:
test=*> select * from t1;
 id
----
  1
  2
  3
  4
  5
  6
  7
(7 rows)

test=*> select * from t2;
 id
----
  1
  2
  3
  4
  5
  1
  2
(7 rows)

test=*> select count(*) from t1 inner join t2 using(id);
 count
-------
  7
(1 row)

Du suchst aber scheinbar:

Code:
test=*> select count(distinct t2.id) from t1 inner join t2 using(id);
 count
-------
  5
(1 row)

Wie bei mir immer: PostgreSQL. Keine Garantie, daß das bei Dir auch so geht.
 
Werbung:

ewc1111

Benutzer
Beiträge
20
Durch den inner join bekommst die Anzahl der Datensätze, die übereinstimmen. Beispiel, beachte in t2 ist 1 und 2 doppelt:

Code:
test=*> select * from t1;
id
----
  1
  2
  3
  4
  5
  6
  7
(7 rows)

test=*> select * from t2;
id
----
  1
  2
  3
  4
  5
  1
  2
(7 rows)

test=*> select count(*) from t1 inner join t2 using(id);
count
-------
  7
(1 row)

Du suchst aber scheinbar:

Code:
test=*> select count(distinct t2.id) from t1 inner join t2 using(id);
count
-------
  5
(1 row)

Wie bei mir immer: PostgreSQL. Keine Garantie, daß das bei Dir auch so geht.

Grosser Meister ich verbeuge mich vor Dir ;-) letzteres hat geklappt mit Distinct...ich merke schon ich muss noch viel dazulernen..von der Logic her kann das mit inner join ja nix werden...Vielen Dank nochmal...
 
Oben