Light777
@Light777
Developer

Почему не работает GROUP BY?

Есть такой вот селект. Прописываю в конце group by rnn, но он не работает.
Почему не работает или на что его можно заменить? Хочу избавиться от дубликатов в селекте

SELECT  
           TO_DATE(CT.DOG_DATE, 'dd.mm.rrrr') DOG_DATE,
           case when ct.dog_date>='01.01.2013' then cl.iin
           else nvl(cl.iin,cl.rnn) end rnn,
           UPPER(TRIM(CL.CLIENT_NAME)) CLI_NAME
           
      FROM 
           CONTRACTS      CT,
           CLIENT         CL

     WHERE
       CT.CLIENT = CL.CLIENT
       AND CL.CLIENT_CATEGORY = 1
       
       and rownum < 500 group by rnn;
  • Вопрос задан
  • 3742 просмотра
Пригласить эксперта
Ответы на вопрос 3
Чтобы избавиться от дублей, есть DISTINCT. А если хотите именно через GROUP BY, то вам там нужно указать все три поля, присутствующие в SELECT, а не только rnn.
Ответ написан
Kwisatz
@Kwisatz
Больше web-приложений, хороших и разных
почитал ветку комментов под предыдущим ответом, к сожалению не понимая что именно вы делаете трудно советовать, но: выберите подзапросом DISTINCT rnn а затем к нему джоином всю остальную выборку.
Ответ написан
Cresh
@Cresh
ИТ Архитектор X5 Retail Group
так?
SELECT nvl(decode(ct.dog_date, date '2013-01-01', cl.iin, null), cl.rnn) rnn,
TO_DATE(CT.DOG_DATE, 'dd.mm.rrrr') DOG_DATE,
UPPER(TRIM(CL.CLIENT_NAME)) CLI_NAME,
count(*)
FROM CONTRACTS CT, CLIENT CL
WHERE CT.CLIENT = CL.CLIENT
AND CL.CLIENT_CATEGORY = 1
and rownum < 500
group by nvl(decode(ct.dog_date, date '2013-01-01', cl.iin, null), cl.rnn),
TO_DATE(CT.DOG_DATE, 'dd.mm.rrrr'),
UPPER(TRIM(CL.CLIENT_NAME));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы