Announcement

Collapse
No announcement yet.

Tabelle mit Werten durchlaufen lassen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tabelle mit Werten durchlaufen lassen

    Hi,

    ich habe eine Tabelle1 und Tabelle2

    In Tabelle1 habe ich:

    kontostand|datum
    1.00|01.04.2010
    6.00|02.04.2010
    3.00|03.04.2010

    In Tabelle2 habe ich:
    wert|kontonr
    2.00|konto2
    1.00|konto1
    6.00|konto5
    nun meine frage:

    wie durchlaufe ich tabelle1 tageweise und selektiere in tabelle2 immer den höchsten wert, um ihn dann vom kontostand abzuziehen?
    die werte dürfen solange nicht negativ sein, bis alle konten verbraucht sind...

    Mein Beispiel errechnet also:
    Höchster Wert: 6.00, Konto5
    zieht dann vom 01.04.2010 1.00 ab, Rest 5.00 also noch immer das höchste
    02.04 -> 5.00 von konto 5, 1 Stunde von konto2

    somit haben wir nun
    1.00|konto2
    1.00|konto1
    0.00|konto5

    03.04.2010 -> 1.5 werden abgezogen, nacheinander von konto 1 und konto 2
    da ich aber keinen wert mehr übrig habe, muss nun vom letzten konto noch eine stunde abgezogen werden. endstand tabelle2:

    0.00|konto2
    -1.00|konto1
    0.00|konto5


    nur wie bewerkstellige ich diesen ablauf?
    ich habe es mal im ansatz mit einem cursor, der die einzelnen tage durchläuft versucht. leider weiß ich dann nicht weiter, wie ich die konten sinnvoll durchlaufen soll.

    vielen dank. würde mich über hilfe freuen.

    lg schnurzli

  • #2
    Ich sehe zwischen Tabelle1 und Tabelle2 keine Verknüpfung

    Comment


    • #3
      gibt es auch keine. es geht rein darum, die werte aus tabelle2 von tabelle1 im von mir gezeigten beispiel.

      Comment


      • #4
        evtl. hilft dir die anweisung "Cursor for ... Fetch" weiter ...

        musst mal danach googeln .. ich selber kann dir nur folgendes statement ausm kopf niederschreiben ..
        Code:
        DECLARE beliebiger_Cursor_name CURSOR FOR 
        SELECT Tabellenspalte FROM dbo.Tabelle 
        WHERE (.........)
        
        OPEN beliebiger_Cursor_name
        FETCH NEXT FROM beliebiger_Cursor_name 
        WHILE @@FETCH_STATUS =0
          BEGIN
            
                       [Deine ANWEISUNG !!! ]
        
                      FETCH NEXT FROM beliebiger_Cursor_name
        	
          END
        CLOSE beliebiger_Cursor_name
        DEALLOCATE beliebiger_Cursor_name

        Comment

        Working...
        X