Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

gleicher Wert in mehreren Spalten suchen und als Ergebnis die Spalte zurückbekommen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Pippsen14, 23 Oktober 2019.

  1. Pippsen14

    Pippsen14 Neuer Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Code:
    andreas@[local]:5432/test# create table pippsen14(a int, b int, c int);
    CREATE TABLE
    andreas@[local]:5432/test# insert into pippsen14 values (1,2,3);
    INSERT 0 1
    andreas@[local]:5432/test# select case when a=3 then 'a' when b=3 then 'b' when c=3 then 'c' end as spalte from pippsen14 ;
     spalte
    --------
     c
    (1 row)
    
    PG, sollte aber portabel sein.
     
  3. Pippsen14

    Pippsen14 Neuer Benutzer

    Dankeschön :)
     
  4. Dukel

    Dukel Datenbank-Guru

    Den gibt es nicht. Entweder 2014 oder 2017.
    Wenn du aber 2005 meinst, dann solltest du schnell upgraden. Der ist seit 2012 aus dem Extended Support raus.
     
  5. ukulele

    ukulele Datenbank-Guru

    akretschmer's Code hat einen kleinen Haken: Wenn der Wert in A und B gefunden wird dann ist das Ergebnis der CASE-Anweisung nur 'a'. Jetzt ist die Frage ob das überhaupt wichtig ist, ob dann Zeilen mehrfach als Ergebnis ausgegeben werden sollen oder ob in der vom CASE erzeugten Spalte mehr Information stehen soll.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    yeah, man könnte es erweitern:

    Code:
    andreas@[local]:5432/test# select * from pippsen14 ;
     a | b | c | d
    ---+---+---+---
     1 | 2 | 3 | 3
    (1 row)
    
    andreas@[local]:5432/test# select case when a=3 then 'a' else '' end || case when b=3 then 'b' else '' end || case when c=3 then 'c' else '' end || case when d=3 then 'd' else '' end from pippsen14 ;
     ?column?
    ----------
     cd
    (1 row)
    
    andreas@[local]:5432/test#
    
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden