zoukankan      html  css  js  c++  java
  • 行列转置

    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
    
  • 相关阅读:
    2018QBXT刷题游记(4)
    洛谷 P4302 字符串折叠 题解
    hdu5009 Paint Pearls 题解
    CF467C George and Job 题解
    洛谷P2622 关灯问题II 题解
    洛谷 P3049园林绿化 题解
    洛谷 P1064 金明的预算方案 题解
    洛谷P1979 华容道 题解
    2018QBXT刷题游记(3)
    2018QBXT刷题游记(2)
  • 原文地址:https://www.cnblogs.com/jnnleo/p/15035771.html
Copyright © 2011-2022 走看看