не может группировать по данным - PullRequest
0 голосов
/ 22 января 2019

Ввод

A   B    date
--------------------
00  12   22-01-2019
00  12   null
00  25   22-01-2019
00  24   22-01-2019 

Из приведенных выше данных мне нужен следующий вывод:

  A   B    date
--------------------
 00  12    null
 00  25    22-01-2019
 00  24   22-01-2019

Мне нужно получить открытые, закрытые записи из таблицы.

если я использовал date, то null, тогда другие существующие записи не будут отображаться.

мне нужно применить условие в столбце B.

Если в столбце есть нулевое значение в дате для столбца B, тогда null покажетв противном случае будет указано как нулевое, так и ненулевое значение null, тогда будет показана дата null.

Select a,b,date 
from table1,table2
where ...
group by a,b,date

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Установка Oracle :

CREATE TABLE table_name ( A, B, DT ) AS
SELECT 0, 12, DATE '2019-01-22' FROM DUAL UNION ALL
SELECT 0, 12, NULL FROM DUAL UNION ALL
SELECT 0, 25, DATE '2019-01-22' FROM DUAL UNION ALL
SELECT 0, 24, DATE '2019-01-22' FROM DUAL;

Запрос

SELECT A,
       B,
       CASE
       WHEN COUNT( CASE WHEN DT IS NULL THEN 1 END ) > 0
       THEN NULL
       ELSE MAX( DT )
       END AS DT
FROM   table_name
GROUP BY A, B;

Выход

 A |  B | DT       
-: | -: | :--------
 0 | 12 | <em>null</em>     
 0 | 24 | 22-JAN-19
 0 | 25 | 22-JAN-19

дБ <> скрипка здесь

0 голосов
/ 22 января 2019

Агрегатные функции игнорируют нули, поэтому вам нужно Аналитическая версия :

select a, b, min(date_) keep (dense_rank first order by date_ nulls first) 
  from input group by a, b

демо

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