2014-11-07 18 views
5

Próbuję podzielić wartości jednej kolumny na wiele kolumn na podstawie wartości innej kolumny, mógłbym ją pobrać, ale nie mogę usunąć dodatkowych wartości null, które dostajęjak podzielić wartości pojedynczej kolumny na wiele kolumn na podstawie innych wartości kolumn

stół

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'); 

Pożądany wyjście

NAME VALUE 
a  a1 
b  b1 

sql próbowałem

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

u może dostarczyć więcej informacji o tym, co u chcą zrobić? Twoje wyjaśnienie jest trochę mylące. –

+0

Jak są powiązane dane a i a1 (a także b i b1)? Czy wartość zawsze zaczyna się od nazwy + niektórych dodatkowych znaków? Czy też identyfikatory powinny być takie same między nazwą i wartością? Czy próbujesz to zrobić na podstawie kolejności, w jakiej zostały wprowadzone? Na tej podstawie możemy znaleźć rozwiązanie dla Ciebie. –

+0

@ArunPrasanth: Przeczytaj pytanie poprawnie – Wanderer

Odpowiedz

3

zobacz poniższy skrypt i nadzieję, że tym pomóc:

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

Wielkie dzięki @Paresh – abdulH

1

Jeśli nie mylę to powinno pomóc.

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

NIE, to nie zadziałało - http://sqlfiddle.com/#!2/f7ca5a/11 – abdulH

+0

@abdulH - zmień DBMS na MS SQL SERVER w skrzypcach. wybrałeś MYSQL !!! –

+0

Tak, moje złe, twoje zapytanie działa. dzięki – abdulH

Powiązane problemy