2016-10-13 2 views
0

Snapshot of my data and what I wantTSQL приведения столбцов к строкам t,

Мои данные что-то вроде этого (я приложил картинку, чтобы показать данные и то, что я хочу тоже)

LoanNb FullNm Rule1 Rule2 Rule3 Rule4 … Rule40 
100 A Fatal null null Warning  null  
200 A null null Fatal null  null  
300 B null Warning null null  null  
400 C null null null null  null  

Я хочу, чтобы это как этот

LoanNb FullNm Rule Name Outcome     
100 A Rule1  Critical      
100 A Rule4  Warning     
200 A Rule3  Critical      
300 B Rule2  Warning     

Я искал в форуме, я думаю, что мне нужно делать univot, я пробую это, но не работаю. Я новичок в SQL.

select * 
From Tablename 

Unpivot 
(RuleOutcome for Rulename in ('Rule1', 'Rule2', 'Rule3', 'Rule4') 
) unpiv 
+1

Если это вопрос SQL-сервер, вы должны изменить тег, –

+1

Каким образом это не работает? Вы получаете сообщение об ошибке? Если не какие данные вы видите и почему это неправильно? –

ответ

1
declare @t table(LoanNb int, FullNm varchar(1),Rule1 varchar(10),Rule2 varchar(10), Rule3 varchar(10),Rule4 varchar(10),rule5 varchar(10)) 
insert into @t values 
(100, 'A', 'Fatal', null, null, 'Warning', null), 
(200, 'A', null, null, 'Fatal', null, null), 
(300, 'B', null, 'Warning',null, null, null), 
(400, 'C', null, null ,null, null, null) 

SELECT loannb, fullnm, rules 
FROM 
    (SELECT fullnm,loannb, rule1,rule2,rule3,rule4 
    FROM @t) p 
UNPIVOT 
    (rules FOR setofrules IN (rule1,rule2,rule3,rule4) 
)AS unpvt; 

результат loannb правила fullnm


100 A  Fatal 
    100 A  Warning 
    200 A  Fatal 
    300 B  Warning 

(4 ряда пострадавших)

+0

Он работает как шарм, спасибо, оцените быстрый ответ! – samsql

+0

P.Salmon, не могли бы вы добавить текст в начале этого ответа, чтобы объяснить, что у вас было? Что делает решение OP неправильным? – halfer

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