Oracle中行转列应该怎么使用?

我的语句为select * from(select factory,sysdate,rate from H)pivot(max(rate)for factory in(一分厂,二分厂))请问有什么错误吗?不给一分厂 二分厂加上单引号时,显示不允许将非常量表达式用于pivot值,加上单引号时,显示factory标识符无效?请问应该怎么改正啊?

(ps.手机上问的问题,可能会乱码之类的)

想从 factory   sysdate      rate

         一分厂    2021-3-10   33

          二分厂   2021-3-10    40

          一分厂     2021-3-11   50

         二分厂     2021-3-11      44

转换为  sysdate   一分厂     二分厂

             2021-3-10    33             40

              2021-3-11   50              44

neyhig 发布于 2021-3-18 09:54
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
snrtuemcLv8专家互助
发布于2021-3-18 09:59

你这个,直接数据库查询出来,然后直接使用帆软报表的交叉表就可以了

交叉报表-https://help.fanruan.com/finereport/doc-view-2107.html

  • neyhig neyhig(提问者) 还是想用这个语句来试试…不知道问题在哪
    2021-03-18 10:15 
最佳回答
0
luojian0323Lv7资深互助
发布于2021-3-18 09:59
  • neyhig neyhig(提问者) 请问一直显示factory标识符无效是为什么啊?语句就是这么写的
    2021-03-18 10:18 
最佳回答
0
AntidoteLv4见习互助
发布于2021-3-18 16:37

行转列,交叉表

需求:从员工表统计每个部门的人数

线统计部门人数

Select deptno,COUNT(empno) from emp

GROUP BY deptno

30

7

20

5

10

3

行转列

10

20

30

总人数

3

5

7

15

Select

Max(CASE WHEN deptno= 10

When CNT ELSE 0 END) "10",

Max(CASE WHEN deptno= 10

When CNT ELSE 0 END) "10",

Max(CASE WHEN deptno= 10

When CNT ELSE 0 END) "10",

Sun(cnt) 总人数 from(

Select  deptno,

COUNT(empno) cnt

FROM emp

GROUP BY deptno

)

  • 4关注人数
  • 441浏览人数
  • 最后回答于:2021-3-18 16:37
    请选择关闭问题的原因
    确定 取消
    返回顶部