Sie müssen Wert in einer Spalte finden und dann Wert aus einer anderen Spalte zurückgeben

Hier ist mein Problem. Ich habe eine Microsoft SQL server-database-Tabelle mit einer Reihe von Spalten in ihm. (Ich kann die datastruktur dieser Tabelle nicht ändern!)

  • 21 der Spalten in dieser Tabelle stehen für 'tatsächliche' Größen
  • 21 der Spalten in dieser Tabelle stehen für 'Relative' Größen
  • Die Spalten der tatsächlichen Größe entsprechen über Spaltennummer der relativen Größe.
    (ex: ActualColumn1 entspricht RelativeColumn1 , ActualColumn2 entspricht RelativeColumn2 , ActualColumnX bis RelativeColumnX bis zu 21)

Basierend auf dem eingegebenen 'Actual'-Wert muss ich den entsprechenden' Relative'-Wert zurückgeben.

Ich habe es geschafft, einen Teil dessen zu tun, was ich mit der folgenden Fall-statement benötige, aber Fall-Aussagen haben maximal 10 Bedingungen und können daher nicht alle 21 Spalten in meiner Tabelle abdecken. Was wäre der beste path, um dieses Problem zu lösen? Mein Ziel wäre es, dies in eine ausgewählte Aussage zu setzen, damit ich die Relative Größe auswählen und in meine Abfrage zurückgeben kann.

Beispiel für das, was ich mit der Fall-statement gemacht habe:

SELECT T.AValue CASE WHEN (T.ActualColumn1 = T.AValue) then T.RelativeColumn1 ELSE CASE WHEN (T.ActualColumn2 = T.AValue) THEN T.RelativeColumn2 ELSE CASE WHEN (T.ActualColumn3 = T.AValue) THEN T.RelativeColumn3 ELSE CASE WHEN (T.ActualColumn4 = T.AValue) THEN T.RelativeColumn4 ELSE NULL END END END END AS RValue FROM T 

Danke für Ihre Hilfe!

Wenn Sie Ihre Fall-statement zu einem gesuchten Fall ändern, können Sie mehr als 10 wenn Klauseln haben.

 select T.AValue, case T.AValue when T.ActualColumn1 then T.RelativeColumn1 when T.ActualColumn2 then T.RelativeColumn2 when T.ActualColumn3 then T.RelativeColumn3 when T.ActualColumn4 then T.RelativeColumn4 end as RValue from T