помогите с формулировкой дела оракула - PullRequest
0 голосов
/ 20 июля 2011

Пока у меня работает этот оператор case, в котором я присваиваю значение 1 или 0 результату.Теперь я хочу подправить это и добавить второй столбец (информация о дате).

Вот рабочее утверждение:

select 
     case when count(*) = 0 then 1 else 0 end result 
from Table1 
where 
   to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') >= trunc(sysdate)-1;

Результат:

RESULT
----------
     0

Теперь я хочу получить ту же информацию о дате (to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') >= trunc(sysdate)-1) в том же наборе результатов.

Есть ли способ сделать это за один проход?Результат, который я хотел бы получить:

MYDT     RESULT
------   ---------
18-JUL-11      0

Ответы [ 2 ]

3 голосов
/ 20 июля 2011

Есть несколько способов сделать это в зависимости от ваших данных.

Например, если у вас может быть несколько значений для даты, но вы всегда хотите подсчет *, вы можете сделать

With Totalcount as  (select 
     case when count(*) = 0 then 1 else 0 end result 
from Table1 
where 
   to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') >= trunc(sysdate)-1) 

SELECT DISTINCT   
       to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') MYDT,
        totalcount.result
FROM 
     Table1 , Totalcount 
where 
   to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') >= trunc(sysdate)-1

Однако, если вы хотите посчитать по дате, вам нужно сделать

select 
     to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') as mydt,
     case when count(*) = 0 then 1 else 0 end result
from Table1 
where 
   to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') >= trunc(sysdate)-1
GROUP BY 
    to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD')
0 голосов
/ 20 июля 2011
select 
     to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') as mydt,
     case when count(*) = 0 then 1 else 0 end result
from Table1 
where 
   to_date(year||'/'||month||'/'||day, 'YYYY/MM/DD') >= trunc(sysdate)-1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...