Announcement

Collapse
No announcement yet.

Datensätze selektieren

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

  • Datensätze selektieren

    Hallo alle zusammen, ich bin mit dem Aufbau meiner Datenbank unzufrieden.
    In meinen Tabellen wird jeweils jeder neu hinzukommende Wert auf den vorherigen aufaddiert, so dass die Werte ständig größer werden. Um dies zu vermeiden würde ich nun gerne eine Sicht erstellen, indem jeweils von jedem Datensatz der Vorgänger subtrahiert wird. Wäre echt nett wenn ihr mir ein bisschen auf die Sprünge helfen könntet!Vielen Dank schonmal für eure Mühe

    Matze

  • #2
    jeder neu hinzukommende Wert auf den vorherigen aufaddiert
    Wie darf man sich das bitte vorstellen?
    Ich kenne es von Statistik-Tabellen, wo Monatswerte kumuliert, um einfacher & schneller auswerten zu können.
    Dann gibt es aber auch eine große Detailstabelle mit allen Einzelbewegungen.
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Vom Schema her ist das select in der View etwa so:

      select feld_1, feld_2, ... wert - IsNull((select max(wert) from tabelle as t2 where t2.key = t1.key and t2.wert < t1.wert),0), feld_x, ... from tabelle as t1


      bye,
      Helmut

      Comment


      • #4
        Man muss sich das so vorstellen, dass alle Werte in der gleichen Tabelle stehen.Wird jetzt beispielsweise jede Minute exakt der Wert 10 in die Datenbank geschrieben so sieht diese vom Aufbau wie folgt aus: 10,20,30,40,50......!Dies möchte ich allerdings nicht, sondern dass da eben wieder steht: 10,10,10,10,10.....

        Comment


        • #5
          ... dann würde meine Antwort ja passen

          bye,
          Helmut

          Comment


          • #6
            Danke schonmal, mir ist nur noch nicht ganz klar was du mit "feld_1","feld_x" bzw. "feld_2" meinst, vielleicht kannst mir das nochmal erläutern

            Grüße Matze

            Comment


            • #7
              Hallo Matze,

              wie das SQL Statement prinzipiell aussehen könnte, hat Helmut ja schon geschrieben.
              Mit "feld_1" usw. sind natürlich die Felder der genutzten Tabelle gemeint; wie die nun heissen / der Tabellenaufbau ist, hast Du uns ja nicht mitgeteilt, Demo-Daten sind auch nie verkehrt.
              Also das Beispiel hier noch einmal, mit Demo-Daten.
              [highlight=SQL]CREATE TABLE #Ums
              (Konto int, Datum datetime, LfdUms money);
              GO
              INSERT INTO #Ums VALUES (10, '20090610', 10);
              INSERT INTO #Ums VALUES (20, '20090610', 10);
              INSERT INTO #Ums VALUES (10, '20090611', 25);
              INSERT INTO #Ums VALUES (20, '20090611', 30);
              INSERT INTO #Ums VALUES (10, '20090612', 35);
              INSERT INTO #Ums VALUES (20, '20090612', 50);
              GO

              SELECT *,
              LfdUms
              - ISNULL((SELECT TOP 1 LfdUms
              FROM #Ums AS SUB
              WHERE SUB.Konto = MAIN.Konto
              AND SUB.Datum < MAIN.Datum
              ORDER BY SUB.Datum DESC), 0) AS DiffUms
              FROM #Ums AS MAIN
              GO
              DROP TABLE #Ums[/highlight]
              [highlight=code]Konto Datum LfdUms DiffUms
              ----------- ----------------------- --------------------- ---------------------
              10 2009-06-10 00:00:00.000 10,00 10,00
              20 2009-06-10 00:00:00.000 10,00 10,00
              10 2009-06-11 00:00:00.000 25,00 15,00
              20 2009-06-11 00:00:00.000 30,00 20,00
              10 2009-06-12 00:00:00.000 35,00 10,00
              20 2009-06-12 00:00:00.000 50,00 20,00[/highlight]
              Olaf Helper

              <Blog> <Xing>
              * cogito ergo sum * errare humanum est * quote erat demonstrandum *
              Wenn ich denke, ist das ein Fehler und das beweise ich täglich

              Comment

              Working...
              X