проблема SQL-запроса - PullRequest
       6

проблема SQL-запроса

0 голосов
/ 29 апреля 2010

почему этот запрос выдает ошибку: ORA-01790

SELECT TO_CHAR(logical_date,'MM') MONTH
       FROM logical_date WHERE logical_date_type='B'        
UNION 
SELECT 
        TO_CHAR(logical_date,'MM')+1 MONTH
        FROM logical_date WHERE logical_date_type='B'

но когда я запускаю их отдельно, они дают правильный вывод.

Ответы [ 2 ]

4 голосов
/ 29 апреля 2010

Я подозреваю, что +1 вызывает преобразование типов данных. Попробуйте:

SELECT TO_CHAR(logical_date,'MM')+0 MONTH 
       FROM logical_date WHERE logical_date_type='B'         
UNION  
SELECT  
        TO_CHAR(logical_date,'MM')+1 MONTH 
        FROM logical_date WHERE logical_date_type='B' 
3 голосов
/ 29 апреля 2010

Вы хотите различный набор месяцев в этой таблице плюс все последующие месяцы, верно?

select to_char(logical_date, 'MM') MONTH 
from (   
    SELECT logical_date
    FROM logical_date WHERE logical_date_type='B'        
    UNION 
    SELECT ADD_MONTHS(logical_date,1)
    FROM logical_date WHERE logical_date_type='B'
)
/

В качестве альтернативы мы можем использовать TRUNC(logical_date, 'MM') для получения первого дня месяца, если нам нужно сохранить тип данных DATE.

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