Announcement

Collapse
No announcement yet.

TSQL Mehrere Zeilen mit Werten von einer Zeile aktualisieren

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

  • TSQL Mehrere Zeilen mit Werten von einer Zeile aktualisieren

    Hallo zusammen,

    stehe gerade etwas auf dem Schlauch und suche daher einen Denkanstoß. Ich suche ein (T)SQL Statement mit dem ich folgendes erreichen kann:

    Der Wert aus Spalte C von A=1 und B=A soll in die Spalte C von A=1 und (B=B oder B=C bzw. alle anderen Zeilen mit A=1) kopiert werden. Sprich Spalte C soll vereinheitlicht werden.
    Bei A=2 gilt das dann analog. Die Spalte C von A=2 und B=A soll in die anderen mit A=2 kopiert werden.

    Vielen Dank für Eure Hilfe.
    Ulrich

    Tabelle
    SpalteA SpalteB SpalteC
    1 A Text1
    1 B abc
    1 C xyz
    2 A Text2
    2 B NULL
    2 C NULL

  • #2
    Der erste Schritt ist das Selekt Statement, dass die richtigen Werte liefert.
    Das hast Du schon? Schreib es hier rein!
    Zuletzt editiert von defo; 31.01.2020, 10:30.
    Gruß, defo

    Comment


    • #3
      Ja, das hab ich schon

      SELECT t0.SpalteC
      FROM Tabelle t0
      WHERE t0.SpalteB = 'A'

      D.h dieses SELECT muss in Abhängigkeit von SpalteA als SET = dem UPDATE eingefügt werden?

      Comment


      • #4
        Das kann nicht der select sein. Es fehlt wohl die Abhängigkeit von SpalteA.

        Christian

        Comment


        • #5
          Gut, das liefert den reinen Wert, aber Du schreibst ja selbst, dass es in Abhängigkeit von A behandelt werden muss! Also musst Du das erweitern.
          Gruß, defo

          Comment


          • #6
            Vielen Dank für die Hinweise.

            Code:
            UPDATE t0
            SET t0.spalteC =
              (SELEC t1.spalteC
               FROM tabelle t1
               WHERE t1.spalteB = 'A'
                 AND t1.spalteA = t0.spalteA)
            FROM tabelle t0
            WHERE t0.spalteB <> 'A'

            Comment


            • #7
              Originally posted by df5tx View Post
              Code:
              UPDATE t0
              SET t0.spalteC =
              (SELEC t1.spalteC
              FROM tabelle t1
              WHERE t1.spalteB = 'A'
              AND t1.spalteA = t0.spalteA)
              FROM tabelle t0
              WHERE t0.spalteB <> 'A'
              Gut, das ist eine funktionierende Lösung. Man sieht das häufig mit Hilfe von subqueries gelöst. Da soetwas oft nicht systematisch eingesetzt wird, sondern eher bei Datenmigration /-bereinigung, ist es meist auch okay.
              Bei größeren Datenmengen ist es vielleicht nicht optimal.

              Hier ist ein Beispiel mittels Korrelation (correlated Update):
              https://rextester.com/HKKD14106
              Gruß, defo

              Comment

              Working...
              X