2013-07-11 74 views
-1

我有一個表,我試圖讓一天的小時數的不同列如何列出MySQL數據水平

| Name | HR | # | 
+---+---+-----+----+ 
| A  | 00 | 10 | 
| A  | 01 | 11 | 
| B  | 00 | 8 | 
| B  | 01 | 9 | 
| C  | 00 | 6 | 
| C  | 01 | 7 | 
+-----+---+--+--+---+ 


00 10 8 6 
01 11 9 7 

我需要按每小時所有字母HR但列表計數。我試着創建一個循環遍歷它的程序,但沒有運氣。

+0

它被稱爲交叉表,而mysql本身不支持它。這裏有很多關於SO搜索的問題。 –

+0

'Pivot'可能是比交叉表更好的選擇 - 請參閱http://stackoverflow.com/questions/tagged/pivot+mysql –

+0

今天必須是今天的作業,因爲這是今天第三個這樣的問題。 –

回答

0

也許GROUP_CONCAT()就足夠了?

SELECT HR, GROUP_CONCAT(`#`) FROM my_table GROUP BY HR 

請參閱sqlfiddle

然後,您可以將分隔符(字符串)拆分爲默認逗號,但可以使用SEPARATOR關鍵字將其更改爲任何所需字符(例如U+001E,ASCII「記錄分隔符」)。