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!

Recommended Posts

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 to post

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

Edited by mowch
Link to post

Ich glaube nicht dass es so geht wie Du möchtest. Du könntest natürlich die OVER Sache testen, lass dir nur die Zwischensumme und die ID ausgeben, jetzt nimmst Du deine Tabelle und hängst die View mit der Zwischensumme einfach dran. Verknüpft über die ID, schon wird die Zwischensumme nur einmal angezeigt.

Link to post


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 to post

ca 1 Minute in der Tabelle, nach dem ich den select alle Minuten ausführen möchte wird das so nicht klappen :wink2:

OK, dann so umbauen wie von mir vorgeschlagen. Alternativ mit Indexen experimentieren, vielleicht wird es dann schneller.

Link to post
  • 3 weeks later...

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 to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...