2016-03-31 4 views
-1

У меня есть устаревшее программное обеспечение, которое имеет чрезвычайно архаичный способ отображения данных в SQL.SQL Выберите названия столбцов, где значение столбца равно

В основном у меня есть экран ввода данных с меткой и поле «да/нет» для каждого из них, это в SQL заканчивается столбцом, представляющим это поле, а затем получаемое значение является ответом на это поле «да».

Мой пример

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

Это продолжается примерно 72 да/нет коробки.

В основном мне требуется имя столбца return для этого поля PolRef @, если значение в этой строке равно «Да».

Я начал писать следующую

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] 

Но, конечно, там должен быть более быстрым способом?

Может ли кто-нибудь помочь вообще?

ответ

1

Чтобы сделать это, вы можете использовать unpivot.

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

Большое спасибо vkp! :) – Lynchie

Смежные вопросы