Что не так с этим запросом Oracle? (ORA-00904: "DURUM": неверный идентификатор) - PullRequest
0 голосов
/ 06 декабря 2011

Я пытаюсь написать запрос SQL. Если это работает в Oracle SQL Developer, я буду использовать его в запросе TableAdapters. Это запрос; DURUM не принадлежит ни к одной таблице, но я буду рекламировать ее как поле в TableAdapter

Ошибка есть; ORA-00904: "DURUM": неверный идентификатор

SELECT IPYYB_BELGE.BELGEID,
       IPYYB_MUELLIF.MUELLIFID,
       IPYYB_MUELLIF.AD,
       IPYYB_MUELLIF.SOYAD,
       IPYYB_MUELLIF.TCKIMLIKNO,
       IPYYB_BELGE.SERINO,
       IPYYB_PRM_BELGEGRUP.ACIKLAMA,
       IPYYB_BELGE.ALINMATARIHI,
       IPYYB_BELGE.SONGUNCELLEMETARIHI,
       IPYYB_PRM_MUELLIFUNVAN.ACIKLAMA AS UNVANACIKLAMA,
       DURUM,
       CASE
         WHEN IPYYB_BELGE.ALINMATARIHI >= 2012 THEN 'EDA'
         WHEN IPYYB_BELGE.ALINMATARIHI < 2012 THEN 'GECE'
       END AS DURUM
FROM IPYYB_MUELLIF,
     IPYYB_BELGE,
     IPYYB_PRM_BELGEGRUP,
     IPYYB_PRM_MUELLIFUNVAN
WHERE IPYYB_MUELLIF.MUELLIFID = IPYYB_BELGE.MUELLIFID
AND   IPYYB_BELGE.GRUPID = IPYYB_PRM_BELGEGRUP.KOD
AND   IPYYB_MUELLIF.UNVAN = IPYYB_PRM_MUELLIFUNVAN.KOD (+)

Решение

SELECT IPYYB_BELGE.BELGEID,
   IPYYB_MUELLIF.MUELLIFID,
   IPYYB_MUELLIF.AD,
   IPYYB_MUELLIF.SOYAD,
   IPYYB_MUELLIF.TCKIMLIKNO,
   IPYYB_BELGE.SERINO,
   IPYYB_PRM_BELGEGRUP.ACIKLAMA,
   IPYYB_BELGE.ALINMATARIHI,
   IPYYB_BELGE.SONGUNCELLEMETARIHI,
   IPYYB_PRM_MUELLIFUNVAN.ACIKLAMA AS UNVANACIKLAMA,

   (CASE
     WHEN IPYYB_BELGE.ALINMATARIHI >= 2012 THEN 'EDA'
     WHEN IPYYB_BELGE.ALINMATARIHI < 2012 THEN 'GECE'
   END) DURUM
FROM IPYYB_MUELLIF,
     IPYYB_BELGE,
     IPYYB_PRM_BELGEGRUP,
     IPYYB_PRM_MUELLIFUNVAN
WHERE IPYYB_MUELLIF.MUELLIFID = IPYYB_BELGE.MUELLIFID
AND   IPYYB_BELGE.GRUPID = IPYYB_PRM_BELGEGRUP.KOD
AND   IPYYB_MUELLIF.UNVAN = IPYYB_PRM_MUELLIFUNVAN.KOD (+)

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Предполагая, что "EDA" должна быть символьной константой, вам нужно использовать одинарные, а не двойные кавычки.

"EDA" - это имя столбца, тогда как 'EDA' - это символьный литерал

Редактировать

DURUM apears до вашего заявления по делу. Вы не можете ссылаться на псевдоним столбца

На самом деле я думаю, что в этом нет необходимости, потому что оператор CASE вернет столбец с именем DURUM.

0 голосов
/ 06 декабря 2011

Удалите первое вхождение DURUM, поскольку у вас нет столбца с таким именем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...