2012-03-21 59 views
10

我有一個問題:SQLite的:GROUP_CONCAT()多列

在我的SQLite(Android上的sqlite3的)數據庫中,我有一個表像這樣

company | name | job 
-------------------------- 
     1 | 'Peter' | 'Manager' 
     1 | 'Jim' | (null) 
     2 | 'John' | 'CEO' 
     2 | 'Alex' | 'Developer' 
     3 | 'Lisa' | (null) 

,我想獲得到

company | formated 
-------------------------------------- 
     1 | 'Peter (Manager), Jim' 
     2 | 'John (CEO), Alex (Developer)' 
     3 | 'Lisa' 

我走到這一步,是

SELECT group_concat(concat) FROM (
    SELECT 
     CASE 
      WHEN job IS NULL THEN name 
      ELSE name || ' (' || job || ')' 
     END AS concat 
    FROM jobs 
) 

這給了我全部一個字符串

'Peter (Manager), Jim, John (CEO), Alex (Developer), Lisa' 

雖然這是相當不錯的已經,它仍然不是我想要的。在那個時候,我不明白我是如何組合事物才能得到我想要的。

在旁註:有沒有關於複雜查詢的好教程?到目前爲止,我只找到了一些片段,但沒有真正解釋如何構建這樣的事情

+0

Zapl我一直在尋找了一整天如何多行合併成一排了一整天感謝你的問題+的例子,給我解:) – 2015-02-09 13:54:17

回答

14

你就近了!

SELECT 
    company, 
    group_concat(concat) AS formated 
FROM (
    SELECT 
     company, 
     CASE 
      WHEN job IS NULL THEN name 
      ELSE name || ' (' || job || ')' 
     END AS concat 
    FROM jobs 
) 
GROUP BY company 
+1

哎呀,只有2行以上。 Thx很多 – zapl 2012-03-21 01:25:25

+0

嗨如何將過濾器(其中)放在group_concat在sqlite中? – 2015-02-09 14:42:51

+1

@MuhammadBabar jst在GROUP BY子句之前 – Vincy 2015-07-13 17:22:41