2015-06-29 64 views
0

我的表是:用SQL中的這段代碼將多行轉換爲一行?

id val  catid 
1 title1  7 
2 text1  8 
3 title2  7 
4 text2  8 

我想結合行作爲本:

val1  val2 
title1  text1 
title2  text2 

我用這個查詢:

select 
(case when catid = 7 then val end) val1, 
(case when catid = 8 then val end) val2 
from mytable 

但我的結果是:

val1  val2 
title1  Null 
Null  text1 
title1  Null 
Null  text2 

如何解決它? 謝謝

+0

查找到透視和逆透視。哪個DBMS? – Tom

+0

在sqlite中不支持pivot和unpivot。謝謝@湯姆 – hahamed

+1

最好包括你使用的SQLite :) – Tom

回答

1

怎麼樣使用GROUP_CONCAT函數。也許你可以在你的程序邏輯中用逗號分割它。

select group_concat(val) as vals 
from table group by catid 

在您的應用程序:

splitted_array = vals.Split(","); 
key=splitted_array [0]; 
value=splitted_array [1];