DISTINCT возвращает повторяющиеся строки в Oracle - PullRequest
0 голосов
/ 12 октября 2018

Я не профессионал SQL.Я использовал все столбцы в своем операторе SELECT и использовал их все в GROUP BY.Однако я получал дубликаты записей.Затем я добавил DISTINCT в свой запрос, но все равно получаю дубликаты записей.Что я тут не так делаю?

SELECT DISTINCT 
        action_by_id
       ,a.status_cd
       ,owner_dsply_nm                      AS "CASE OWNER"
       ,case_intrl_id                       AS "CASE ID"
       ,status_nm                           AS "STATUS VALUE"
       ,action_ts                           AS "STATUS CHANGE DATE"
       ,To_char(action_ts - 7 / 24, 'IYYY') AS "STATUS CHANGE YEAR" 
       ,To_char(action_ts - 7 / 24, 'IW')   AS "STATUS CHANGE WEEK" 
FROM   kdd_case_actions a 
       join kdd_status  s 
         ON a.status_cd = s.status_cd 
       join kdd_review_owner r
         ON r.owner_seq_id = a.action_by_id
WHERE  a.status_cd NOT IN ( 'SBTMNEW', 'NW', 'SB01NEW' ) 
GROUP  BY To_char(action_ts - 7 / 24, 'IYYY') 
          ,To_char(action_ts - 7 / 24, 'IW') 
          ,action_ts
          ,case_intrl_id 
          ,status_nm
          ,owner_dsply_nm
          ,action_by_id
          ,a.status_cd

Results

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

В вашем запросе нет функции агрегации, поэтому зачем использовать group by .. используйте только разные
и убедитесь, что вы получаете только parte даты для action_ts, и, наконец, убедитесь, что у вас есть правильная усеченная строка для пробела или нетвидимый символ

    SELECT DISTINCT 
            action_by_id
           ,trim(a.status_cd)
           ,trim(owner_dsply_nm)                      AS "CASE OWNER"
           ,case_intrl_id                       AS "CASE ID"
           ,trim(status_nm )                         AS "STATUS VALUE"
           ,to_char(action_ts, 'DD.MON.YYYY')    AS "STATUS CHANGE DATE"
           ,To_char(action_ts - 7 / 24, 'IYYY') AS "STATUS CHANGE YEAR" 
           ,To_char(action_ts - 7 / 24, 'IW')   AS "STATUS CHANGE WEEK" 
    FROM   kdd_case_actions a 
    join kdd_status  s ON a.status_cd = s.status_cd 
    join kdd_review_owner r ON r.owner_seq_id = a.action_by_id
    WHERE  a.status_cd NOT IN ( 'SBTMNEW', 'NW', 'SB01NEW' ) 


    TO_DATE (action_ts, 'DD.MON.YYYY')
0 голосов
/ 12 октября 2018

Если ваш столбец action_ts является отметкой времени или датой, вы видите ее только часть в своем пользовательском интерфейсе.Я думаю, вы увидите, что строки имеют разные значения в этом столбце, если вы распечатаете его более подробно.

...