我正在尝试编写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 (+)
答案 0 :(得分:1)
假设"EDA"
应该是字符常量,则需要使用单引号,而不是双引号。
"EDA"
是列名,而'EDA'
是字符文字
修改强>
DURUM
apears 之前你的案例陈述。您无法引用像
实际上我认为不需要它,因为CASE语句将返回一个名为DURUM的列。
答案 1 :(得分:0)
删除DURUM
的第一个出现,因为您没有具有该名称的列。