繁体   English   中英

当我尝试将 SQL 语句从 mysql 迁移到 Oracle 时出错

[英]Error with SQL statement when I try to migrate it from mysql to Oracle

我应该将我的数据库从 mysql 迁移到 oracle,我的问题是我的状态不再起作用,我应该保持相同的格式(别名 champ1,champ2)

这是我的 SQL 声明:

select count(j.id) as nb, p.pname as champ1,proj.pname as champ2 
from  jiraissue j  
join priority p on (p.id=j.priority)
join project proj on(proj.id=j.project)
join issuestatus iss on (iss.id=j.issuestatus)
join issuetype isst on(isst.id=j.issuetype )
where j.CREATED between '2011-05-18 00:00:00.0' and '2011-06-05 00:00:00.0'
and iss.pname='Open' 
group by champ1,champ2;

错误:

ORA-00904: "CHAMP2" : identificateur non valide
00904. 00000 -  "%s: invalid identifier"

PS:当我从 select 中删除 groupby 和别名并执行时,还会出现错误,表明日期格式无效

ORA-01861: le littéral ne concorde pas avec le format chaîne de caractères

出于多种原因,SQL 的大多数实现都不允许您对查询的 SELECT 部分中的别名进行分组。

select count(j.id) as nb, p.pname as champ1,proj.pname as champ2 
from  jiraissue j  
join priority p on (p.id=j.priority)
join project proj on(proj.id=j.project)
join issuestatus iss on (iss.id=j.issuestatus)
join issuetype isst on(isst.id=j.issuetype )
where
  j.CREATED between '2011 May 18' and '2011 June 05'
  and iss.pname='Open' 
group by
  p.pname,
  proj.pname
;


编辑 - 跟进评论:

我不确定为什么上述答案对您没有太大帮助,也许您不想在代码中重复自己? (您通过别名分组获得的东西,因此在所有其他 rdbms 中都会丢失)如果是这样,以下模式可能会有所帮助......

SELECT
  COUNT(j_id) AS nb, champ1, champ2
FROM
(
  select j.id AS j_id, p.pname as champ1, proj.pname as champ2
  from  jiraissue j  
  join priority p on (p.id=j.priority)
  join project proj on(proj.id=j.project)
  join issuestatus iss on (iss.id=j.issuestatus)
  join issuetype isst on(isst.id=j.issuetype )
   where
    j.CREATED between '2011 May 18' and '2011 June 05'
    and iss.pname='Open' 
)
  AS data
GROUP BY
  champ1,
  champ2
;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM