Ошибка с оператором SQL при попытке перенести его из mysql в Oracle - PullRequest
1 голос
/ 16 августа 2011

Я должен перенести свою базу данных из 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: Когда я удаляю groupby и псевдоним из select и execute, также появляется сообщение об ошибке, указывающее, что формат даты недействителен

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

1 Ответ

3 голосов
/ 16 августа 2011

По целому ряду причин большинство реализаций 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
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...