日期:2014-05-16  浏览次数:21227 次

一个数据库sql问题


表一是我现在有的表样,同事要求改成表二的格式。
表一是一张明细表,最后一列是对之前的月份合计列。 
到表二,原表一合计列根据项目转到第一行中。
大虾中哪位知道什么方法能达到。
------解决方案--------------------
一条语句搞定:
SELECT *
  FROM (SELECT NULL 时间,
               NULL 编号,
               '项目合计' 摘要,
               (SELECT SUM(合计) FROM 表) 合计,
               (SELECT SUM(合计) FROM 表 WHERE 项目名称 = '项目1') 项目1,
               (SELECT SUM(合计) FROM 表 WHERE 项目名称 = '项目2') 项目2,
               0 序号
          FROM dual
        UNION
        SELECT 时间,
               编号,
               摘要,
               合计,
               decode(项目名称, '项目1', 合计, NULL) 项目1,
               decode(项目名称, '项目2', 合计, NULL) 项目2,
               编号 序号
          FROM 表)
 ORDER BY 序号