行列转置

1.实现方式

sql行列转置两种写法

  • case when
    完整语法
    case [col] when [value1] then [value2] else [value3] end
    case when [条件语句] then [value1] else [value2] end
  • if
    完整语法 if([条件语句], [value1], [value2])

2.示例

SELECT
	DATE_FORMAT( d.date, '%Y-%m' ) AS 月份,
IF
	( d.series_id = 4974, sum( d.new_sheng ), 0 ) AS `理想ONE`,
IF
	( d.series_id = 11, sum( d.new_sheng ), 0 ) AS `11`,
IF
	( d.series_id = 22, sum( d.new_sheng ), 0 ) AS `22`,
IF
	( d.series_id = 33, sum( d.new_sheng ), 0 ) AS `33` 
FROM
	dy_series_stats_daily AS d 
WHERE
	d.date >= '2019-01-01' 
	AND d.date <= '2021-06-30' 
	AND d.series_id IN ( 4974, 11, 22, 33 ) 
GROUP BY
	DATE_FORMAT( d.date, '%Y-%m' ),
	d.series_id 
ORDER BY
	DATE_FORMAT( d.date, '%Y-%m' ) DESC
SELECT
	DATE_FORMAT( d.date, '%Y-%m' ) AS 月份,
case when d.series_id = 4974 then sum( d.new_sheng ) else 0 end AS `理想ONE`,
IF
	( d.series_id = 11, sum( d.new_sheng ), 0 ) AS `11`,
IF
	( d.series_id = 22, sum( d.new_sheng ), 0 ) AS `22`,
IF
	( d.series_id = 33, sum( d.new_sheng ), 0 ) AS `33` 
FROM
	dy_series_stats_daily AS d 
WHERE
	d.date >= '2019-01-01' 
	AND d.date <= '2021-06-30' 
	AND d.series_id IN ( 4974, 11, 22, 33 ) 
GROUP BY
	DATE_FORMAT( d.date, '%Y-%m' ),
	d.series_id 
ORDER BY
	DATE_FORMAT( d.date, '%Y-%m' ) DESC
posted @ 2021-07-20 16:49  jnnleo  阅读(111)  评论(0编辑  收藏  举报