各顧客に割り当てられたすべての顧客プロンプトの連結リストを返そうとしていますが、顧客キー (CUS_PK) ごとに 1 つの行のみが返されます。次のクエリでは、探している情報が得られますが、複数のプロンプトが 1 人の顧客に割り当てられている場合、重複する行が取得されます。プロンプト キーがすべての可能な組み合わせで返されることを除いて、各行は同一です。組み合わせごとに 1 行。これは結合を使用しているためであることはわかっていますが、これを行う別の方法を思いつくほど SQL について十分に知りません。
私が使用しているクエリは次のとおりです。
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
また、プロンプトが返される順序を指定するにはどうすればよいですか?
ありがとう!