重复结果 - 无法压缩
Duplicate results - cannot condense
此报告的结果列出了同一客户 7-9 次。我不完全确定为什么。尝试过 GROUPING 和 DISTINCT。 DISTINCT 将结果细化为每个客户只有 3 个重复项。
也许我忽略了一些显而易见的事情。
简而言之,我得到
客户ID | First_Name | Last_Name
123............约翰................................约翰
123............约翰................................约翰
123............约翰................................约翰
456 .....................鲍勃......................鲍勃
456 .....................鲍勃......................鲍勃
456 .....................鲍勃......................鲍勃
我需要的:
客户ID | First_Name | Last_Name
123............约翰................................约翰
456 .....................鲍勃......................鲍勃
但是 GROUP BY 或 DISTINCT 没有解决问题。
SELECT
c.clientID
,c.firstName AS 'First_Name'
,c.lastName AS 'Last_Name'
,c.homePhone AS 'Home'
,c.cellPhone AS 'Cell'
,NULL AS '------'
,CASE
WHEN ccf.name LIKE 'First Contact Date' THEN ccv.TextVal
END AS 'First_Contact_Date'
,CASE
WHEN ccf.name LIKE 'Referral Date' THEN ccv.DateVal
END AS 'Referral_Date'
,CASE
WHEN ccf.name LIKE 'Referred By' THEN ccv.TextVal
END AS 'Referred_By'
,CASE
WHEN ccf.name LIKE 'Intake Date' THEN ccv.DateVal
END AS 'Intake_Date'
,CASE
WHEN ccf.name LIKE 'Intake By' THEN ccv.TextVal
END AS 'Intake_By'
,CASE
WHEN ccf.name LIKE 'Orientation Date' THEN ccv.TextVal
END AS 'Orientation_Date'
,CASE
WHEN civ.clientIndexID = 5 THEN civ.clientIndexValueName
END AS 'Primary_Language'
,NULL AS '------'
,CASE
WHEN civ.clientIndexID = 18 THEN civ.clientIndexValueName
END AS 'Type'
,CASE
WHEN civ.clientIndexID = 20 THEN civ.clientIndexValueName
END AS 'Stage_at_intro'
,CASE
WHEN civ.clientIndexID = 21 THEN civ.clientIndexValueName
END AS 'Current_stage'
,NULL AS '------'
,CASE
WHEN civ.clientIndexID = 19 THEN civ.clientIndexValueName
END AS 'Percentage'
,CASE
WHEN civ.clientIndexID = 26 THEN civ.clientIndexValueName
END AS 'Location'
,CASE
WHEN civ.clientIndexID = 27 THEN civ.clientIndexValueName
END AS 'Eligible?'
FROM clients c
INNER JOIN tblClientCustomValues ccv
ON c.clientID = ccv.clientID
INNER JOIN tblClientCustomFields ccf
ON ccv.ID = ccf.ID
INNER JOIN tblClientIndexData cid
ON c.clientID = cid.clientID
INNER JOIN tblClientIndexValue civ
ON cid.clientIndexValueID = civ.clientIndexValueID
GROUP BY c.clientID
,c.firstName
,c.lastName
,c.homePhone
,c.cellPhone
,ccf.name
,ccv.TextVal
,ccv.DateVal
,civ.clientIndexValueName
,civ.clientIndexID
有关表格的更多信息:
tblClientCustomFields ccf:
编号 |名称 |类型ID
tblClientIndexData cid:
ClientIndexValueID |客户端ID
tblClientIndexValue 文明:
ClientIndexValueID |客户端索引 ID | ClientIndexValueName
tblClientCustomValues ccv:
编号 |客户端ID |文本值 |日期值 |数值
您可以从分组依据列表中删除信息列并将 max()
添加到您的代码或将所有聚合放入子查询中:
SELECT
c.clientID
,c.firstName AS 'First_Name'
,c.lastName AS 'Last_Name'
,c.homePhone AS 'Home'
,c.cellPhone AS 'Cell'
,NULL AS '------'
,info.*
FROM clients c
OUTER APPLY
(
SELECT
max(CASE
WHEN ccf.name LIKE 'First Contact Date' THEN ccv.TextVal
END) AS 'First_Contact_Date'
,max(CASE
WHEN ccf.name LIKE 'Referral Date' THEN ccv.DateVal
END) AS 'Referral_Date'
,max(CASE
WHEN ccf.name LIKE 'Referred By' THEN ccv.TextVal
END) AS 'Referred_By'
,max(CASE
WHEN ccf.name LIKE 'Intake Date' THEN ccv.DateVal
END) AS 'Intake_Date'
,max(CASE
WHEN ccf.name LIKE 'Intake By' THEN ccv.TextVal
END) AS 'Intake_By'
,max(CASE
WHEN ccf.name LIKE 'Orientation Date' THEN ccv.TextVal
END) AS 'Orientation_Date'
,max(CASE
WHEN civ.clientIndexID = 5 THEN civ.clientIndexValueName
END) AS 'Primary_Language'
,NULL AS '------'
,max(CASE
WHEN civ.clientIndexID = 18 THEN civ.clientIndexValueName
END) AS 'Type'
,max(CASE
WHEN civ.clientIndexID = 20 THEN civ.clientIndexValueName
END) AS 'Stage_at_intro'
,max(CASE
WHEN civ.clientIndexID = 21 THEN civ.clientIndexValueName
END) AS 'Current_stage'
,max(CASE
WHEN civ.clientIndexID = 19 THEN civ.clientIndexValueName
END) AS 'Percentage'
,max(CASE
WHEN civ.clientIndexID = 26 THEN civ.clientIndexValueName
END) AS 'Location'
,max(CASE
WHEN civ.clientIndexID = 27 THEN civ.clientIndexValueName
END) AS 'Eligible?'
FROM tblClientCustomValues ccv
INNER JOIN tblClientCustomFields ccf
ON ccv.ID = ccf.ID
INNER JOIN tblClientIndexData cid
ON ccv.clientID = cid.clientID
INNER JOIN tblClientIndexValue civ
ON cid.clientIndexValueID = civ.clientIndexValueID
WHERE c.clientID = ccv.clientID
) info
此报告的结果列出了同一客户 7-9 次。我不完全确定为什么。尝试过 GROUPING 和 DISTINCT。 DISTINCT 将结果细化为每个客户只有 3 个重复项。
也许我忽略了一些显而易见的事情。
简而言之,我得到
客户ID | First_Name | Last_Name
123............约翰................................约翰
123............约翰................................约翰
123............约翰................................约翰
456 .....................鲍勃......................鲍勃
456 .....................鲍勃......................鲍勃
456 .....................鲍勃......................鲍勃
我需要的:
客户ID | First_Name | Last_Name
123............约翰................................约翰
456 .....................鲍勃......................鲍勃
但是 GROUP BY 或 DISTINCT 没有解决问题。
SELECT
c.clientID
,c.firstName AS 'First_Name'
,c.lastName AS 'Last_Name'
,c.homePhone AS 'Home'
,c.cellPhone AS 'Cell'
,NULL AS '------'
,CASE
WHEN ccf.name LIKE 'First Contact Date' THEN ccv.TextVal
END AS 'First_Contact_Date'
,CASE
WHEN ccf.name LIKE 'Referral Date' THEN ccv.DateVal
END AS 'Referral_Date'
,CASE
WHEN ccf.name LIKE 'Referred By' THEN ccv.TextVal
END AS 'Referred_By'
,CASE
WHEN ccf.name LIKE 'Intake Date' THEN ccv.DateVal
END AS 'Intake_Date'
,CASE
WHEN ccf.name LIKE 'Intake By' THEN ccv.TextVal
END AS 'Intake_By'
,CASE
WHEN ccf.name LIKE 'Orientation Date' THEN ccv.TextVal
END AS 'Orientation_Date'
,CASE
WHEN civ.clientIndexID = 5 THEN civ.clientIndexValueName
END AS 'Primary_Language'
,NULL AS '------'
,CASE
WHEN civ.clientIndexID = 18 THEN civ.clientIndexValueName
END AS 'Type'
,CASE
WHEN civ.clientIndexID = 20 THEN civ.clientIndexValueName
END AS 'Stage_at_intro'
,CASE
WHEN civ.clientIndexID = 21 THEN civ.clientIndexValueName
END AS 'Current_stage'
,NULL AS '------'
,CASE
WHEN civ.clientIndexID = 19 THEN civ.clientIndexValueName
END AS 'Percentage'
,CASE
WHEN civ.clientIndexID = 26 THEN civ.clientIndexValueName
END AS 'Location'
,CASE
WHEN civ.clientIndexID = 27 THEN civ.clientIndexValueName
END AS 'Eligible?'
FROM clients c
INNER JOIN tblClientCustomValues ccv
ON c.clientID = ccv.clientID
INNER JOIN tblClientCustomFields ccf
ON ccv.ID = ccf.ID
INNER JOIN tblClientIndexData cid
ON c.clientID = cid.clientID
INNER JOIN tblClientIndexValue civ
ON cid.clientIndexValueID = civ.clientIndexValueID
GROUP BY c.clientID
,c.firstName
,c.lastName
,c.homePhone
,c.cellPhone
,ccf.name
,ccv.TextVal
,ccv.DateVal
,civ.clientIndexValueName
,civ.clientIndexID
有关表格的更多信息:
tblClientCustomFields ccf:
编号 |名称 |类型ID
tblClientIndexData cid:
ClientIndexValueID |客户端ID
tblClientIndexValue 文明:
ClientIndexValueID |客户端索引 ID | ClientIndexValueName
tblClientCustomValues ccv:
编号 |客户端ID |文本值 |日期值 |数值
您可以从分组依据列表中删除信息列并将 max()
添加到您的代码或将所有聚合放入子查询中:
SELECT
c.clientID
,c.firstName AS 'First_Name'
,c.lastName AS 'Last_Name'
,c.homePhone AS 'Home'
,c.cellPhone AS 'Cell'
,NULL AS '------'
,info.*
FROM clients c
OUTER APPLY
(
SELECT
max(CASE
WHEN ccf.name LIKE 'First Contact Date' THEN ccv.TextVal
END) AS 'First_Contact_Date'
,max(CASE
WHEN ccf.name LIKE 'Referral Date' THEN ccv.DateVal
END) AS 'Referral_Date'
,max(CASE
WHEN ccf.name LIKE 'Referred By' THEN ccv.TextVal
END) AS 'Referred_By'
,max(CASE
WHEN ccf.name LIKE 'Intake Date' THEN ccv.DateVal
END) AS 'Intake_Date'
,max(CASE
WHEN ccf.name LIKE 'Intake By' THEN ccv.TextVal
END) AS 'Intake_By'
,max(CASE
WHEN ccf.name LIKE 'Orientation Date' THEN ccv.TextVal
END) AS 'Orientation_Date'
,max(CASE
WHEN civ.clientIndexID = 5 THEN civ.clientIndexValueName
END) AS 'Primary_Language'
,NULL AS '------'
,max(CASE
WHEN civ.clientIndexID = 18 THEN civ.clientIndexValueName
END) AS 'Type'
,max(CASE
WHEN civ.clientIndexID = 20 THEN civ.clientIndexValueName
END) AS 'Stage_at_intro'
,max(CASE
WHEN civ.clientIndexID = 21 THEN civ.clientIndexValueName
END) AS 'Current_stage'
,max(CASE
WHEN civ.clientIndexID = 19 THEN civ.clientIndexValueName
END) AS 'Percentage'
,max(CASE
WHEN civ.clientIndexID = 26 THEN civ.clientIndexValueName
END) AS 'Location'
,max(CASE
WHEN civ.clientIndexID = 27 THEN civ.clientIndexValueName
END) AS 'Eligible?'
FROM tblClientCustomValues ccv
INNER JOIN tblClientCustomFields ccf
ON ccv.ID = ccf.ID
INNER JOIN tblClientIndexData cid
ON ccv.clientID = cid.clientID
INNER JOIN tblClientIndexValue civ
ON cid.clientIndexValueID = civ.clientIndexValueID
WHERE c.clientID = ccv.clientID
) info