2017-05-03 60 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或任何你正在使用的),并使用编程语言来创建一个快速的查询。