Сравнение дат Oracle (неверный идентификатор)
У меня есть этот запрос:
SELECT TO_CHAR(HON.CREATE_DT,'DD-MM-YYYY') as CREATE_DT,
HON.ACCOUNT_NO,(SELECT TO_CHAR(CURRENT_DATE - INTERVAL '7' DAY, 'DD-MM-YYYY') FROM DUAL) AS NV
FROM medium.HONSCRIBERS HON,
medium.HONSCRIBER_TEXT pcode,
medium.ACCESS_NUMBERS accnr
WHERE
accnr.STATUS_CD = 'CU' AND
pcode.TRADING_AS ='7777777'AND
HON.ACCOUNT_NO=pcode.ACCOUNT_NO AND
HON.ACCOUNT_NO=accnr.ACCOUNT_NO
Возвращает:
[0] => Array
(
[CREATE_DT] => 28-02-2008
[ACCOUNT_NO] => 20340322
[NV] => 20-05-2011
)
[1] => Array
(
[CREATE_DT] => 28-02-2008
[ACCOUNT_NO] => 20340322
[NV] => 20-05-2011
)
Мне нужно сравнить даты CREATE_DT и NV Мой запрос:
SELECT TO_CHAR(HON.CREATE_DT,'DD-MM-YYYY') as CREATE_DT,
HON.ACCOUNT_NO,(SELECT TO_CHAR(CURRENT_DATE - INTERVAL '7' DAY, 'DD-MM-YYYY') FROM DUAL) AS NV
FROM medium.HONSCRIBERS HON,
medium.HONSCRIBER_TEXT pcode,
medium.ACCESS_NUMBERS accnr
WHERE
accnr.STATUS_CD = 'CU' AND CREATE_DT < NV AND
pcode.TRADING_AS ='7777777'AND
HON.ACCOUNT_NO=pcode.ACCOUNT_NO AND
HON.ACCOUNT_NO=accnr.ACCOUNT_NO
У меня есть эта ошибка:
[code] => 904
[message] => ORA-00904: "NV": invalid identifier
[offset] => 325
Почему он всегда писал мне: "НВ": неверный идентификатор? Спасибо за помощь.
1 ответ
Решение
Вы не можете использовать псевдоним столбца в предложении WHERE того же запроса. Вы должны повторить выражение, для которого это псевдоним:
AND CREATE_DT < (CURRENT_DATE - INTERVAL '7' DAY)
(Обратите внимание, что здесь вы не хотите указывать TO_CHAR, иначе сравнение не будет работать корректно)