T-SQL --> gleicher Wert in mehreren Spalten suchen und als Ergebnis die Spalte zurückbekommen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    T-SQL --> gleicher Wert in mehreren Spalten suchen und als Ergebnis die Spalte zurückbekommen

    Hallo,

    mein Problem ist das ich eine Nummer habe und die in 3 Unterschiedlichen Spalten einer SQL Tabelle stehen kann. Den Wert grundsätzlich zu finden ist kein Thema, da ich die "Where" Bedingung mit einem "or" verknüpfe. Ich möchte aber gerne wissen in welcher Spalte der Wert gefunden wurde. Kann mir jemand einen Tipp geben?

    Ich benutze Microsoft SQL Server 2015

    Vielen lieben Dank

    Quellcode

    1. Select
    2. [Einkaufsdaten].ID,
    3. [Einkaufsdaten].BESTELLNUMMER_1,
    4. [Einkaufsdaten].BESTELLNUMMER_2,
    5. [Einkaufsdaten].BESTELLNUMMER_3
    6. from
    7. [Einkaufsdaten]
    8. where
    9. [Einkaufsdaten].BESTELLNUMMER_1 = '12345'
    10. or
    11. [Einkaufsdaten].BESTELLNUMMER_2 = '12345'
    12. or
    13. [Einkaufsgdaten].BESTELLNUMMER_3= '12345'


    Die Bestellnummer '12345' könnte in allen Spalten vorkommen.
    Du könntest ein Union-Statement erzeugen

    SQL-Abfrage

    1. Select 'B1' AS BestellNummer, [Einkaufsdaten].ID, [Einkaufsdaten].BESTELLNUMMER_1, [Einkaufsdaten].BESTELLNUMMER_2, [Einkaufsdaten].BESTELLNUMMER_3 from [Einkaufsdaten] where [Einkaufsdaten].BESTELLNUMMER_1 = '12345'
    2. UNION
    3. Select 'B2' AS BestellNummer, [Einkaufsdaten].ID, [Einkaufsdaten].BESTELLNUMMER_1, [Einkaufsdaten].BESTELLNUMMER_2, [Einkaufsdaten].BESTELLNUMMER_3 from [Einkaufsdaten] where [Einkaufsdaten].BESTELLNUMMER_2 = '12345'
    4. UNION
    5. Select 'B3' AS BestellNummer, [Einkaufsdaten].ID, [Einkaufsdaten].BESTELLNUMMER_1, [Einkaufsdaten].BESTELLNUMMER_2, [Einkaufsdaten].BESTELLNUMMER_3 from [Einkaufsdaten] where [Einkaufsdaten].BESTELLNUMMER_3 = '12345'

    oder

    SQL-Abfrage

    1. Select 'B1' AS BestellNummer, * from [Einkaufsdaten] where [Einkaufsdaten].BESTELLNUMMER_1 = '12345'
    2. UNION
    3. Select 'B2' AS BestellNummer, * from [Einkaufsdaten] where [Einkaufsdaten].BESTELLNUMMER_2 = '12345'
    4. UNION
    5. Select 'B3' AS BestellNummer, * from [Einkaufsdaten] where [Einkaufsdaten].BESTELLNUMMER_3 = '12345'


    Nebenbei:
    Bist du sicher, dass das Datenmodell gut durchdacht ist?
    Da wurden einige Normalisierungsformen verletzt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()