【发布时间】:2018-08-01 21:38:47
【问题描述】:
我正在使用以下代码,每个案例只获得一个关联人,使用 MAX Associated Type 获得前 1 个。
关联类型不是 GUID,而是看起来像:
责任方、主治医师等
碰巧责任方是最后一个按字母顺序排列的选项,所以这是一个幸运的解决方法。但是,并非每个案例都有责任方,如果没有责任方,则下一个最重要的相关人员“足够好”,无论如何都会突出显示为数据错误。
结果显示每个关联人(而不是前 1 个),但将所有这些人都显示为责任方,这是不正确的。我在这里做错了什么?
FROM T_LatestIFSP Ltst
LEFT OUTER JOIN (
SELECT
Clas.ClientCase_ID,
MAX(Astp.AssociatedType) AS AssociatedType
FROM
T_ClientAssociatedPerson Clas
Inner Join T_AssociatedType Astp
ON Clas.AssociatedType_ID = Astp.AssociatedType_ID
GROUP BY Clas.ClientCase_ID
) AS Astp ON Ltst.ClientCase_ID = Astp.ClientCase_ID
LEFT OUTER JOIN T_ClientAssociatedPerson Clas
on Clas.ClientCase_ID = Astp.ClientCase_ID
LEFT OUTER JOIN T_AssociatedPerson Aspr
ON Aspr.AssociatedPerson_ID = Clas.AssociatedPerson_ID
【问题讨论】:
-
我应该加入 AssociatedPerson_ID 上的后续表,而不是 ClientCase_ID?如果是这样,我如何在 SELECT 语句中包含 AssociatedPerson_ID?
-
您能提供一些示例数据并期待结果吗?
-
@D-Shih - 我刚做了,谢谢。
-
为什么您的预期结果中的
AssociatedType_IDforClientCase_ID= '02' 设置为24?我们不希望它是04吗? -
您能详细解释一下您的逻辑吗?为什么要在
AssociatedType中获得MAX
标签: sql sql-server tsql join