2016-03-31 2 views
-1

Ich habe einige Legacy-Software, die eine extrem archaische Art der Datenanzeige in SQL hat.SQL Spaltentitel auswählen, wobei Spaltenwert gleich Ja ist

Grundsätzlich habe ich einen Dateneingabebildschirm mit einem Label und einem Ja/Nein-Feld für jeden, dies in SQL endet mit einer Spalte, die das Feld darstellt und der resultierende Wert ist die Antwort auf dieses Ja-Nein-Feld.

Mein Beispiel

[email protected] | [email protected] | HH01 | HH02 | HH03 | HH04 
0 | LYJX01 | Yes | No | No | Yes 
0 | POMS01 | No | No | No | Yes 

Dies gilt für rund 72 ja auf/Nein-Boxen.

Ich benötige grundsätzlich den Namen der Spalte Rückkehr für das 'PolRef @', wenn der Wert in dieser Zeile gleich 'Ja' ist.

Ich begann die folgenden

SELECT [email protected] , [email protected] , CASE WHEN hqe1.Hh01 = 'Yes' THEN 'HH01' END AS [Endorsement] FROM dbo.ic_BD_HQE1 hqe1 
WHERE CASE WHEN hqe1.Hh01 = 'Yes' THEN 'HH01' END IS NOT NULL 
UNION 
SELECT [email protected] , [email protected] , CASE WHEN hqe1.Hh02 = 'Yes' THEN 'HH02' END AS [Endorsement] FROM dbo.ic_BD_HQE1 hqe1 
WHERE CASE WHEN hqe1.Hh02 = 'Yes' THEN 'HH02' END IS NOT NULL 
ORDER BY [email protected] 

Schreiben Aber sicher hat es ein schnellerer Weg sein?

Kann jemand helfen?

Antwort

1

Sie können dazu unpivot verwenden.

select [email protected] , [email protected], endorsement 
from 
(select * from hqe1) t 
unpivot 
(col for endorsement in (HH01,HH02,HH03,HH04)) u 
where col = 'Yes' 
+0

Vielen Dank vkp! :) – Lynchie