не работает distinc

Пишу запрос, без distinct выводит с повторениями, при добавлении distinct ничего не меняется, только отсортировывается

SELECT DISTINCT("QP"."MRN") AS MRN ,
CONCAT( "QP"."SecondName", ' ', "QP"."Name", ' ', "QP"."MiddleName") AS fullName,
"App"."Time",
"App"."AppId",
"App"."PId",
"Q"."StartDate"
FROM "App"
LEFT OUTER JOIN "QP"
ON "App"."PId" = "QP"."PId"
LEFT OUTER JOIN "DS"
ON "App"."DSId" = "DS"."DSId"
LEFT OUTER JOIN "Queues"
ON "DS"."QId" = "Q"."QId"
WHERE "App"."PId" notnull

в чем проблема?


Ответы (2 шт):

Автор решения: Stefanov.sm

Может быть Вам надо только одна строка для каждого "QP"."MRN" AS MRN? Тогда Вам нужен DISTINCT ON. (детали)

SELECT DISTINCT ON ("QP"."MRN")
  "QP"."MRN" AS MRN ,
  CONCAT("QP"."SecondName", ' ', "QP"."Name", ' ', "QP"."MiddleName") AS fullName,
  "App"."Time",
-- и так далее

Для неповторяющихся комбинации AppId и PId:

SELECT DISTINCT ON ("App"."AppId", "App"."PId")
  "QP"."MRN" AS MRN ,
  CONCAT("QP"."SecondName", ' ', "QP"."Name", ' ', "QP"."MiddleName") AS fullName,
  "App"."Time",
-- и так далее
→ Ссылка
Автор решения: Герман Борисов

По тому как вы расставили скобки, очень похоже, что вы просто не понимаете как работает DISTINCT

В записи SELECT DISTINCT("QP"."MRN")…

DISTINCT - это модификатор команды SELECT

("QP"."MRN") - выражение для вычисления первого столбца.

DISTINCT не имеет параметров, он удаляет одинаковые строки

→ Ссылка