这个Oracle查询有什么问题? (ORA-00904:“DURUM”:标识符无效)

时间:2011-12-06 12:13:04

标签: oracle

我正在尝试编写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 个答案:

答案 0 :(得分:1)

假设"EDA"应该是字符常量,则需要使用单引号,而不是双引号。

"EDA"是列名,而'EDA'是字符文字

修改

DURUM apears 之前你的案例陈述。您无法引用像

这样的列别名

实际上我认为不需要它,因为CASE语句将返回一个名为DURUM的列。

答案 1 :(得分:0)

删除DURUM的第一个出现,因为您没有具有该名称的列。