用了多次unpivot函数后就报错

dg831451 2019-02-26 09:50:26
如下语句查询不会报错
with CTE as(
select
bo.ORGNAME as ORGNAME,
t.xiaoshou as 权益前金额,
t.xiaoshou*(bo.HOLDSTAKE/100) as 权益后金额
from (
select CONTRACTTYPE,orgid,CONTRACTCODE,xiaoshou,jidu from LC_LOANCONTRACT unpivot (xiaoshou for jidu in (LOANAMOUNT,USEDAMOUNT, BACKAMOUNT)) where STATUS=1) t
left join BS_ORGANIZATION bo on t.orgid=bo.id
where ORGLEVELCODE like '0000100006%')
select a.ORGNAME from cte a

但是再套一层unpivot后。。。用表别名就报错了,如下语句就报错了。。。。

with CTE as(
select
bo.ORGNAME as ORGNAME,
t.xiaoshou as 权益前金额,
t.xiaoshou*(bo.HOLDSTAKE/100) as 权益后金额
from (
select CONTRACTTYPE,orgid,CONTRACTCODE,xiaoshou,jidu from LC_LOANCONTRACT unpivot (xiaoshou for jidu in (LOANAMOUNT,USEDAMOUNT, BACKAMOUNT)) where STATUS=1) t

left join BS_ORGANIZATION bo on t.orgid=bo.id
where ORGLEVELCODE like '0000100006%')
select a.ORGNAME from cte a unpivot (xiaoshou_b for jidu_b in (权益前金额,权益后金额))


但是如果把最后的查询a.ORGNAME 改为*那么不会报错。是正确的。。这个是什么原因
...全文
273 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaiger 2019-02-26
  • 打赏
  • 举报
回复
那就换种写法,这个应该是oracle自己解析的问题
在select * from cte a unpivot (xiaoshou_b for jidu_b in (权益前金额,权益后金额))外面加一层select a.ORGNAME 试试
dg831451 2019-02-26
  • 打赏
  • 举报
回复
引用 1 楼 yaiger 的回复:
oracle不是有报错信息吗? 看看这个信息
就一直提示 ORA-00904 发现用别名就不行
yaiger 2019-02-26
  • 打赏
  • 举报
回复
oracle不是有报错信息吗? 看看这个信息
dg831451 2019-02-26
  • 打赏
  • 举报
回复
引用 3 楼 yaiger 的回复:
那就换种写法,这个应该是oracle自己解析的问题 在select * from cte a unpivot (xiaoshou_b for jidu_b in (权益前金额,权益后金额))外面加一层select a.ORGNAME 试试
好吧。也只有这样了。。。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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