Я пытаюсь вернуть объединенный список всех запросов клиентов, назначенных каждому клиенту, причем для каждого ключа клиента (CUS_PK) возвращается только одна строка. Следующий запрос дает мне информацию, которую я ищу, но когда нескольким приглашениям присваивается один клиент, я получаю повторяющиеся строки, причем каждая строка идентична, за исключением того, что клавиши приглашения возвращаются во всех возможных комбинациях, с одной строкой на комбинацию. Я знаю, это связано с тем, что я использую объединения, но я не знаю достаточно о SQL, чтобы придумать другой способ сделать это.SQL Join Возвращает повторяющиеся результаты
Вот запрос я использую:
select CUS1.CUS_PK,
CLP1.CLP_PRM_FK || CASE WHEN CLP2.CLP_PRM_FK <> '' THEN ', ' ELSE '' END ||
CLP2.CLP_PRM_FK || CASE WHEN CLP3.CLP_PRM_FK <> '' THEN ', ' ELSE '' END ||
CLP3.CLP_PRM_FK || CASE WHEN CLP4.CLP_PRM_FK <> '' THEN ', ' ELSE '' END ||
CLP4.CLP_PRM_FK AS 'AP'
FROM ecrs.Customers CUS1
LEFT OUTER JOIN ecrs.CustomerLinkPOSPrompts CLP1 ON (CLP1.CLP_CUS_FK = CUS1.CUS_PK)
LEFT OUTER JOIN ecrs.CustomerLinkPOSPrompts CLP2 ON (CLP2.CLP_CUS_FK = CUS1.CUS_PK AND CLP2.CLP_PRM_FK<>CLP1.CLP_PRM_FK)
LEFT OUTER JOIN ecrs.CustomerLinkPOSPrompts CLP3 ON (CLP3.CLP_CUS_FK = CUS1.CUS_PK AND CLP3.CLP_PRM_FK<>CLP2.CLP_PRM_FK AND CLP3.CLP_PRM_FK<>CLP1.CLP_PRM_FK)
LEFT OUTER JOIN ecrs.CustomerLinkPOSPrompts CLP4 ON (CLP4.CLP_CUS_FK = CUS1.CUS_PK AND CLP4.CLP_PRM_FK<>CLP3.CLP_PRM_FK AND CLP4.CLP_PRM_FK<>CLP2.CLP_PRM_FK AND CLP4.CLP_PRM_FK<>CLP1.CLP_PRM_FK)
ORDER BY CUS1.CUS_PK
GROUP BY, похоже, не имеют никакого эффекта.
повторяющиеся строки выглядят так, переходя от 0-3 быстрых результатов:
CUS_PK AP
----- -----
35331
35274 40
35342 37, 65
35342 65, 37
35344 37, 53, 65
35344 53, 65, 37
35344 37, 65, 53
35344 53, 37, 65
35344 65, 53, 37
35344 65, 37, 53
Кроме того, как я мог бы указать порядок, в котором возвращаются на запросы?
Спасибо!
возможно дубликат [Объединить множество строк в одной текстовой строки?] (HTTP: //stackoverflow.com/questions/194852/concatenate-many-rows-into-a-single-text-string) – jmoreno
..Чтобы уточнить, вы хотите вернуть отдельные CUS_PK и AP, но если AP содержит значения (которые вы concatenated), которые являются одинаковыми (хотя и в другом порядке), чем вы хотите исключить эту строку? – Milan
Милан: Да, это то, что я пытаюсь сделать. – user2655542