mysql 列數據轉成行數據

根據需求我需要查詢用戶第一次提現後每天做任務的情況,比如講連續一個月的數據按照行展示。
我首先將用戶的任務全都查出,然後根據邀請進行分組。但是並不是簡單的分組,我們需要給每個字段都加上Max()函數,這樣將會查詢出用戶某一天的最大值(其實用戶某一天的數據只有一個不爲0,其他都爲0)。

SELECT c.login_name, MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 0 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第一天,
 MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 1 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第二天,
 MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 2 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第三天,
 MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 3 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第四天,
 MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 4 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第五天,
 MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 5 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第六天,
 MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 6 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第七天,
 MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 7 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第八天,
 MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 8 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第九天,
 MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 9 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第十天,
 MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 10 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第十一天,
 MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 11 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第十二天,
 MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 12 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第十三天,
 MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 13 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第十四天,
 MAX(CASE c.date
	WHEN  DATE_FORMAT( DATE_ADD(c.create_date, INTERVAL 14 day),'%Y%m%d')  THEN
		c.counts
	ELSE
		0
END) 第十五天
  FROM 
(SELECT b.id, b.login_name , a.date, COUNT(a.uid) as counts, b.create_date 
FROM ctc_hq.log_task_statistics_hp as a  
RIGHT JOIN (SELECT a.id, a.login_name, MIN(e.create_date) as create_date FROM
(SELECT id, login_name FROM uic.f_app_user WHERE login_name IN ('2065728',
'2070119',
'2069382',
'2077493',
'2029673',
'2061194'
)) as a 
INNER JOIN  moku.f_order as e
ON a.id = e.uid
GROUP BY a.id
) as b
ON b.id = a.uid 
GROUP BY a.date, b.id) as c
GROUP BY c.login_name
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章