oracle行转列

youngboy66 2018-09-30 04:24:49
原始数据:


想要实现的结果:



...全文
1054 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rotel-刘志东 2018-10-21
  • 打赏
  • 举报
回复
pivot() for()in(....)也是可以的。
Rotel-刘志东 2018-10-21
  • 打赏
  • 举报
回复
privot() for()in(....)也是可以的。
  • 打赏
  • 举报
回复
CREATE TABLE t(stage INTEGER,daily INTEGER,monthly INTEGER, dayin INTEGER, dayout INTEGER, dayeff INTEGER);
INSERT INTO t VALUES (1, 200, 1000, 80, 90, 150);
INSERT INTO t VALUES (2, 345, 2345, null, null, null);
INSERT INTO t VALUES (3, 1, 4, null, null, null);
INSERT INTO t VALUES (4, 50, 567, null, 34, null);
INSERT INTO t VALUES (5, 345, 34, 33, 234, 999);
INSERT INTO t VALUES (6, 658, 78, 66, 54, 200);
INSERT INTO t VALUES (7, 88, 99, 9, 33, 87);
INSERT INTO t VALUES (8, 90, 400, 55, 66, 77);

SELECT *
  FROM (SELECT '目标量日' AS "工序", stage, daily
          FROM t
  )
 PIVOT (SUM(daily) FOR (stage) IN (1 AS "1", 2 AS "2", 3 AS "3", 4 AS "4", 5 AS "5", 6 AS "6", 7 AS "7", 8 AS "8"))
 UNION ALL
SELECT *
  FROM (SELECT '目标量月', stage, monthly
          FROM t
  )
 PIVOT (SUM(monthly) FOR (stage) IN (1 AS "1", 2 AS "2", 3 AS "3", 4 AS "4", 5 AS "5", 6 AS "6", 7 AS "7", 8 AS "8"))
 UNION ALL
SELECT *
  FROM (SELECT '当天投入', stage, dayin
          FROM t
  )
 PIVOT (SUM(dayin) FOR (stage) IN (1 AS "1", 2 AS "2", 3 AS "3", 4 AS "4", 5 AS "5", 6 AS "6", 7 AS "7", 8 AS "8"))
 UNION ALL
SELECT *
  FROM (SELECT '当天产出', stage, dayout
          FROM t
  )
 PIVOT (SUM(dayout) FOR (stage) IN (1 AS "1", 2 AS "2", 3 AS "3", 4 AS "4", 5 AS "5", 6 AS "6", 7 AS "7", 8 AS "8"))
 UNION ALL
SELECT *
  FROM (SELECT '当天生产效率', stage, dayeff
          FROM t
  )
 PIVOT (SUM(dayeff) FOR (stage) IN (1 AS "1", 2 AS "2", 3 AS "3", 4 AS "4", 5 AS "5", 6 AS "6", 7 AS "7", 8 AS "8"))
;

工序     |1    |2    |3 |4   |5   |6   |7  |8   |
-------|-----|-----|--|----|----|----|---|----|
目标量日   |200  |345  |1 |50  |345 |658 |88 |90  |
目标量月   |1000 |2345 |4 |567 |34  |78  |99 |400 |
当天投入   |80   |     |  |    |33  |66  |9  |55  |
当天产出   |90   |     |  |34  |234 |54  |33 |66  |
当天生产效率 |150  |     |  |    |999 |200 |87 |77  |
Rotel-刘志东 2018-10-07
  • 打赏
  • 举报
回复
多种方法都是可以的。
decode() case when 两种方法都是可以的
youngboy66 2018-10-05
  • 打赏
  • 举报
回复
竟然没人回复!

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧