2017-05-03 78 views
-1

如果MySQL表看起來像這樣透視表的MySQL

enter image description here

什麼,我試圖做的是數據透視表看起來是這樣的:

Jenny Ashley  Meera Jane 
Samantha Christeen Priya Julia 
NULL  Ketty  NULL Maria 

每列基於其職業

+0

相關主題:[MySQL pivot row into dynamic of columns](http://stackoverflow.com/q/12004603/2298301) –

+0

這個數據看起來很可疑地類似於這個問題中描述的編碼挑戰中的數據幾周前:https://stackoverflow.com/questions/46210995/所以我不知道你是否也試圖做一個編碼挑戰。編碼挑戰的關鍵在於你解決它,而不是讓Stack Overflow的人爲你做! –

回答

0

此代碼將做你想要的東西:

set @sql = (
    select group_concat(distinct 
     concat(
      "(case when `Occupation`='", Occupation, "' then `Name` end) as `", `Occupation`, "`" 
     ) 
    ) 
    from t 
); 

set @sql = concat("select ", @sql, " from t "); 

prepare stmt from @sql; 

execute stmt; 
+0

我達到了這樣的答案,但我無法擺脫空值 –

+0

'IFNULL(expression,0)' –

0

有很多實現這一這裏描述的方法:在那裏做它的動態的方式包括在使用GROUP_CONCAT與CONCAT由阿布舍克古普塔答案MySQL pivot table

。它並不快,但它是動態的。

它的要點是,如果你想要一個動態的解決方案,那麼你首先必須做一個查詢來找出你的數據中有什麼列。然後,根據該信息創建一個新的查詢。

如果你想要一個動態的解決方案也是快速的,那麼你需要將第一個查詢拉入你的編程語言(如php或任何你正在使用的),並使用編程語言來創建一個快速的查詢。