2014-11-07 3 views
5

Я пытаюсь разделить значения одного столбца на несколько столбцов на основе другого значения столбца, я мог бы получить его, но я не могу удалить дополнительные нулевые значения, которые я получаюкак разделить значения одного столбца на несколько столбцов на основе других значений столбцов

стол

create table tbl1 
(id int, strtype varchar(50), strvalue varchar(20)); 

insert into tbl1 values 
(1, 'name', 'a'),(1, 'value', 'a1'),(1, 'name', 'b'),(1, 'value', 'b1'); 

Желаемая выход

NAME VALUE 
a  a1 
b  b1 

SQL я попытался

select 
(case when strtype='name' then strvalue end) as name, 
(case when strtype='value' then strvalue end) as value 
from tbl1 
+0

может у предоставить более подробную информацию о том, что и хотите сделать? Ваше объяснение немного запутывает –

+0

Как связаны данные a и a1 (а также b и b1)? Всегда ли значение начинается с имени + некоторых дополнительных символов? Или идентификаторы должны совпадать между именем и стоимостью? Или вы пытаетесь сделать это в соответствии с порядком их вставки? Исходя из этого, мы можем найти решение для вас. –

+0

@ArunPrasanth: Правильно прочитайте вопрос – Wanderer

ответ

3

Проверьте ниже сценарий и надеюсь, что это поможет вам:

Select t1.strValue , t2.strvalue from tbl1 t1 inner join tbl1 t2 on t1.id = t2.id 
where t1.strtype = 'name' and t2.strtype = 'value' and t1.strvalue = LEFT(t2.strvalue ,1) 
+0

Спасибо большое @Paresh – abdulH

1

Если не ошибаюсь, это должно помочь.

SELECT * 
FROM (SELECT * 
     FROM tbl1) a 
     PIVOT (Max(strvalue) 
      FOR strtype IN (name,value)) pv 
UNION 
SELECT * 
FROM (SELECT * 
     FROM tbl1) a 
     PIVOT (Min(strvalue) 
      FOR strtype IN (name,value)) pv 
+0

НЕТ это не сработало - http://sqlfiddle.com/#!2/f7ca5a/11 – abdulH

+0

@abdulH - изменить СУБД на MS SQL SERVER в скрипке. вы выбрали MYSQL !!! –

+0

Да, плохо, ваш запрос работает. спасибо – abdulH

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