MS Access SQL - удалить дубликаты без четких / группировать по - PullRequest
0 голосов
/ 18 июня 2019

Я работаю в MS Access, и мне нужно удалить повторяющиеся значения из поля [ref] без использования различных (невозможно использовать для определенного поля в доступе) и группировать по (как я хочу сгруппировать по [типу]).

Я попытался использовать дополнительный подзапрос для дедупликации поля [ref], однако не смог заставить его работать. Приведенный ниже код работает, однако включает в себя повторяющиеся значения в поле [ref].

SELECT
    switch(LEFT(t1.[type],1)='C',"Covers",LEFT(t1.[type],1)='P',"PIP") AS type
  , COUNT(t1.[ref])
  , COUNT(t2.[posted]) AS Total_posted
  , format(COUNT(t2.[posted]) / COUNT(t1.[ref]),"0.00%") AS Percentage_posted
FROM
    Some_Table AS t1
    LEFT JOIN
        (
            SELECT
                t2.[ID]
              , t2.[posted]
            FROM
                Some_Table AS t2
            WHERE
                t2.[posted] NOT LIKE ('NA')
        )
        AS t2
    ON
        t1.[ID] = t2.[ID]
GROUP BY
    LEFT(t1.[type],1)

Любая помощь приветствуется!

РЕДАКТИРОВАТЬ: пример сценария ниже

t1. [Ссылка]

  • 1
  • 1
  • 1
  • 2
  • 3
  • 4
  • 5

Текущий код вернет COUNT для t1. [Ref] как 7, однако я хочу, чтобы вывод возвращал счет 5. 5. 1028 *

Дальнейшее редактирование: код теперь, как показано ниже, однако t3. [Ref] по-прежнему не предоставляет различных значений. Есть идеи, где я иду не так?

    SELECT Switch(Left(t1.[type],1)='C',"Covers",Left(t1.[type],1)='P',"PIP") AS type, Count(t3.[ref]) AS CountOfref, Count(t2.[posted]) AS Total_posted, Format(Count(t2.[posted])/Count(t1.[ref]),"Percent") AS Percentage_posted
FROM (additional_data_fields AS t1 LEFT JOIN (Select t2.[ID],t2.[posted] from additional_data_fields as t2 where t2.[posted] not like ('NA'))  AS t2 ON t1.[ID] = t2.[ID]) LEFT JOIN (select distinct t3.[ref] from additional_data_fields as t3)  AS t3 ON t1.[ref] = t3.[ref]
GROUP BY Left(t1.[type],1)
...