Announcement

Collapse
No announcement yet.

Bereich finden mit T-SQL

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

  • Bereich finden mit T-SQL

    Hallo an alle,

    ich steh hier gerade total auf dem Schlauch und hoffe ihr könnt dazu beitragen das ich den richtigen Lösungsansatz finde.

    Ich habe 5 Spalten. 1.Spalte ist ein Zeitstempel fortlaufend (in 1min Abstand) in den restlichen 4 sind Werte die weggeschrieben werden von einer Maschine. Die 4 Spalten können den Wert 0 haben (wenn die Maschine aus ist) oder höher. Ich möchte wissen in welchem Zeitraum die Maschine an ist bzw. aus ist. Soll heißen ist der Wert in allen 4 Spalten höher als 0 soll er eine ID-Spalte angelegen. Die ID soll so lange vergeben werden bis alle 4 Spalten wieder 0 sind. Geht der Wert in allen 4 Spalten wieder hoch wird wieder eine neue ID vergeben.

    zb. so

    Spalte1 Spalte2 Spalte3 Spalte4 Spalte5 ID
    0:01Uhr 0 0 0 0 0
    0:02Uhr 1 1 1 1 1
    0:03Uhr 1 2 1 1 1
    0:04Uhr 1 1 3 5 1
    0:05Uhr 0 0 0 0 0
    0:06Uhr 1 1 1 1 2
    0:07Uhr 1 1 1 1 2

  • #2
    Originally posted by deathdragon View Post
    Hallo an alle,

    ich steh hier gerade total auf dem Schlauch und hoffe ihr könnt dazu beitragen das ich den richtigen Lösungsansatz finde.

    Du brauchst doch nur ein select zu machen und via case when - Konstrukt das passend ausgeben.

    Comment


    • #3
      Originally posted by akretschmer View Post
      Du brauchst doch nur ein select zu machen und via case when - Konstrukt das passend ausgeben.
      Code:
      test=*# select * from deathdragon ;
       ts | c1 | c2 | c3
      ----+----+----+----
        1 |  0 |  0 |  0
        2 |  1 |  0 |  0
        3 |  1 |  1 |  1
        4 |  1 |  1 |  1
        5 |  1 |  0 |  0
      (5 rows)
      
      test=*# select ts, c1, c2, c3, case when c1 > 0 and c2 > 0 and c3 > 0 then 'ein' else 'aus' end from deathdragon ;
       ts | c1 | c2 | c3 | case
      ----+----+----+----+------
        1 |  0 |  0 |  0 | aus
        2 |  1 |  0 |  0 | aus
        3 |  1 |  1 |  1 | ein
        4 |  1 |  1 |  1 | ein
        5 |  1 |  0 |  0 | aus
      (5 rows)

      Comment


      • #4
        ja mit case kann ich das testen das ist klar! aber ich lege wert auf die id! ich möchte anhand der id später weiterarbeiten. zb. gib mir alle werte von id 3 das würde dann heißen das mir dann der komplette Bereich mit allen Werten zur Verfügung stehen würde.

        Comment


        • #5
          Das klingt etwas none SQL mäßig, eher so Echtzeitdatenverarbeitung.
          Das würde man wenn man es überhaupt so macht, wohl am ehesten mit einem Trigger hinbekommen, der bei Updates auf die Spalten entweder einen Sequenz Satz in eine Separate Table einträgt oder diesen zuletzt eingetragen Satz "tot" flagged, falls einer der Werte beim nächsten Update kippt.
          Was Du allerdings nun mit Bereich meinst, ist mir nicht klar.
          Gruß, defo

          Comment

          Working...
          X