Jump to content

Frage zu Abfrage


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Moin, Moin...

 

Kann jemand bei folgender Problemstellung mit einer Abfrage helfen?

 

Ausgangsituation ist eine Tabelle diesen Daten:

Artikel Periode Menge

a 2009001 10

a 2009003 15

a 2010001 20

a 2010007 30

b 2009001 10

b 2010008 20

 

Als Ergebnis müsste kommen:

Artikel Vorjahr Jahr

a 25 50

b 10 20

 

Insgesamt können bis zu 15 Perioden vorkommen, bspw. 2009015, 2010015

Ist dies so möglich?

 

Beste Grüße...

Geschrieben

Das wird so nicht funktionieren. Ich brauch ja die Summen für die einzelnen Jahre aus den Perioden (die ersten vier Stellen). Gegeben sind die Spalten Artikel, Periode, Menge.

Müsste ich vielleicht aus der Spalte Periode eine weitere Spalte Jahr generieren?

Sprich, mit den ersten vier Stellen der Spalte Periode...???

Geschrieben

In Access würde das als Kreuztabellenabfrage ungefähr so aussehen:

TRANSFORM Sum(Tabelle1.Menge) AS SummevonMenge
SELECT Tabelle1.Artikel
FROM Tabelle1
GROUP BY Tabelle1.Artikel
PIVOT Left([Periode],4);

 

Dann sind die ersten 4 Zeichen de Periode quasi die Spaltenüberschriften.

Geschrieben
In Access würde das als Kreuztabellenabfrage ungefähr so aussehen:

TRANSFORM Sum(Tabelle1.Menge) AS SummevonMenge
SELECT Tabelle1.Artikel
FROM Tabelle1
GROUP BY Tabelle1.Artikel
PIVOT Left([Periode],4);

 

Dann sind die ersten 4 Zeichen de Periode quasi die Spaltenüberschriften.

 

Danke!

Habe es so umgesetzt:

SELECT     Artikel, LEFT(Periode, 4) AS Jahr, SUM(Menge) AS [summe Menge]
FROM         dbo.Tabelle
GROUP BY Artikel, LEFT(Periode, 4), Menge
HAVING      (Menge > 0.000) AND (LEFT(Periode, 4) = '2009')

Geschrieben

Moin,

 

noch ein kleiner Tipp,

 

versuch soviel Daten wie möglich schon im "WHERE" statt im "HAVING" einzugrenzen, das bringt bei größeren Datenmengen bessere Performance (wenn SQL >2000 das nicht sowieso von allein optimiert). Warum gruppiert Du nach Menge? Da möchtest Du doch die Summe bekommen. Oder habe ich hier etwas übersehen?

 

z.B.:

 

SELECT Artikel, LEFT(Periode, 4) AS Jahr, SUM(Menge) AS [summe Menge]

FROM dbo.Tabelle

WHERE (Menge > 0.000) AND (LEFT(Periode, 4) = '2009')

GROUP BY Artikel, LEFT(Periode, 4)

 

Gruß Kai

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...