我正在尝试返回分配给每个客户的所有客户提示的串联列表,每个客户键 (CUS_PK) 只返回一行。以下查询为我提供了我正在寻找的信息,但是当多个提示分配给一个客户时,我得到重复的行,每一行都是相同的,除了提示键以所有可能的组合返回,每个组合一行。我知道这是因为我正在使用连接,但我对 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
另外,我如何指定返回提示的顺序?
谢谢!