DB2行转列操作是很常见的问题,下面就教您如何实现DB2行转列操作,如果您之前遇到过DB2行转列的问题,不妨一看。

给出下面的数据:
 CREATE TABLE Sales (Year INT, Quarter INT, Results INT)
YEAR        QUARTER     RESULTS
 ----------- ----------- -----------       
 2004           1          20       
 2004           2          30       
 2004           3          15       
 2004           4          10       
 2005           1          18       
 2005           2          40       
 2005           3          12       
 2005           4          27
想要的到结果:
 YEAR        Q1          Q2          Q3          Q4
 ----------- ----------- ----------- ----------- -----------       
 2004          20          30          15          10       
 2005          18          40          12          27
这个SQL就可解决这个问题:S
 ELECT Year,
        MAX(CASE WHEN Quarter = 1
            THEN Results END) AS Q1, 
        MAX(CASE WHEN Quarter = 2    
            THEN Results END) AS Q2,
        MAX(CASE WHEN Quarter = 3     
            THEN Results END) AS Q3,
        MAX(CASE WHEN Quarter = 4    
            THEN Results END) AS Q4
 FROM Sales
 GROUP BY Year
解释一下为什么要加max的原因,因为不加max的话结果会是这样:
 YEAR        Q1          Q2          Q3          Q4
 ----------- ----------- ----------- ----------- ----------- 
      2004          20           -           -           -  
      2004           -          30           -           -  
      2004           -           -          15           -  
      2004           -           -           -          10   
      2005          18           -           -           -   
      2005           -          40           -           -   
      2005           -           -          12           -   
      2005           -           -           -          27
Copyright © 2009-2022 www.wtcwzsj.com 青羊区广皓图文设计工作室(个体工商户) 版权所有 蜀ICP备19037934号