Jump to content

SQL Select - Zähler von bis


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

Empfohlene Beiträge

Hallo,

ich möchte aus einer Tabelle sie sum(Stück) ermitteln, seit dem Typenwechsel, die Tabelle sie wie folgt aus:

ID      Datum         Type          Anzahl

1       20140305     HK101     60

2       20140305     HK100     10
3       20140305     HK100     15
4       20140305     HK100     23

5       20140305     HK101     5

6       20140305     HK101     10

7       20140305     HK101     20
 

 

ich möchte nun     sum(Anzahl)  von der aktuellen Type

Select für aktuelle Type: select Type from Zähler where ID = (select Max(ID) from Zähler)  Ergebniss HK101
 

Soweit kein Problem, jedoch soll nun nur jene Einträge gezählt werden, seit dem letzten Typenwechsel, d.h. ab ID 5.  die ID 1 darf nicht mitgezählt werden.

 

Ergebnis sollte sein 35

 

Hat jemand ein Idee ob das überhaupt funktioniert?

DANKE
mowch
 

Link zu diesem Kommentar

mit der over klaus funktioniert leider auch nicht so wirklich.

ich probiere es nochmals zu erklären:

 

ich möchte aus einer Tabelle die aktuell produzierten Stück der aktuellen Type ermitteln.

1. die Aktuelle Type erhalten ich durch den letzten Eintrag der Tabelle

somit habe ich meine erste where Bedingung.

2. nun möchte ich nur jene Zeilen retour haben seid dem letzten Typenwechsel, d.h. Typenwechsel war bei ID Nr 5.

select sum(anzahl) from zähler where Type = (select Type from zähler where ID = max(ID)) and ID >  5

 

Wie erhalte ich dynamisch die 5?





 



ich habs mal im Excel dargestellt

post-18723-0-09597200-1394032966_thumb.jpg

bearbeitet von mowch
Link zu diesem Kommentar


Ich glaube, er möchte die einzelnen Zeilen summieren, die über einen Zeitraum nacheinander produziert worden sind,

Wo bei die genaue Zahl jeweils bis zum nächsten Typ-Wechsel benötigt wird.

 

Da fällt mir auch nichts ein, außer eine passende Prozedur zu schreiben. Hier ist man dann nicht mehr an die SQL-Syntax gebunden.

 

Alternative ist ein Neudesign der Datenbank. Z.b. jeder "Produktion" eine eindeutige ID geben. Dann lassen sich die Zeilen gruppieren.

Link zu diesem Kommentar
  • 3 Wochen später...

Moin,

 

der beste Weg wäre wohl, wie schon hier vorgeschlagen wurde, eine Produktionsnummer mit in die Tabelle aufzunehmen.

 

Die andere Lösung (nicht so schön) könnte so aussehen:

 

Vorausetzungen:

- ID ist chronologisch

- eine Produktion ist immer zusammenhängend in der Tabelle vorhanden

- es wird nur der aktuelle Type ermittelt

 

SELECT SUM(Anzahl)
WHERE ID > (

  SELECT MAX(ID)   -- letzte, höchste ID aller anderen Types
  FROM Tabelle
  WHERE Type NOT IN (

 

     SELECT TOP 1 Type    -- aktueller Type = letzte Zeile in der Tabelle
     FROM Tabelle
     ORDER BY ID DESC
  )
)

 

Der innerste Select (Ergebnis eine Zeile) ermittelt den aktuellen Type. Daraufhin wird die höchste ID aller

anderen Types ermittelt (deine Grenze).

Dann noch die Werte aller größeren ID summieren.

 

Ist nicht getestet, gerade was die Laufzeit betrifft.

 

Gruß Kai

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

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...