2016-10-20 41 views
0

每個月,我都會在一個名爲wp_reports的表中收集數據。 例如,我收集社交媒體統計,這給出了一個表所示:Mysql:返回行作爲列

------------------------------------------ 
month | facebook | twitter | linkedin || <-column names 
------------------------------------------ 
Jan 16 | 100 | 200 | 300    || <- row values 
Feb 16 | 102 | 202 | 302 

這是偉大的,按照我們的KPI的每月演化,月。

不過,我現在可以想顯示特定於上個月的數據。 我有一個庫可以根據SQL請求生成餅圖。

我想我的請求的結果爲:

----------- 
label | value 
------------- 
Facebook | 102 
Twitter | 202 
LinkedIN | 302 

這將使我所有的網頁的工作。

問題是我無法找到正確的查詢。

我有以下一個retrives列名作爲標籤:

SELECT 
     CASE 
     WHEN column_name = 'twitter' THEN 'Twitter' 
     WHEN column_name = 'linkedin' THEN 'LinkedIn' 
     ELSE 'Facebook' 
     END 
     as label 
    FROM information_schema.columns 
    WHERE table_name='wp_report' AND column_name IN ('facebook', 'twitter', 'linkedin') 

我現在想知道如何與一個名爲「值」,將包含匹配數列合併。

如果我能旋轉下面的查詢作爲所謂的「值」欄中的結果,那簡直太好了:

'SELECT newsletter, facebook, twitter, gplus, linkedin FROM wp_report ORDER BY date DESC LIMIT 1' 

謝謝您的幫助。

+0

見正常化。數據庫表不是電子表格。 – Strawberry

+0

乾杯!我也使用這一個:http://stackoverflow.com/questions/16359345/transposing-dynamic-columns-to-rows –

回答

0

您可以使用下面的查詢: -

select 'Facebook' label,facebook value from wp_reports where month='JAN' 
UNION ALL 
select 'Twitter' label,Twitter value from wp_reports where month='JAN' 
UNION ALL 
select 'LinkedIn' label,LinkedIn value from wp_reports where month='JAN'; 
+0

謝謝,它的工作! –