【发布时间】:2020-12-16 03:31:04
【问题描述】:
我是 SQL 新手。我已经编写了下面的代码,但被 COUNT 函数卡住了。我只想在 Service 表上显示具有 2 个或更多 ServiceID 的 ClientID。我最初尝试在服务表的连接中进行嵌套选择,但收到错误消息。现在使用下面的代码,我收到一个错误
消息 164,第 15 级,状态 1,第 13 行
每个 GROUP BY 表达式必须至少包含一个不是外部引用的列。
我正在努力实现以下目标。谢谢!
| client Id | Service ID | Count |
|---|---|---|
| 1 | 2 | 3 |
| 1 | 3 | 3 |
| 1 | 4 | 3 |
| 2 | 5 | 4 |
| 2 | 6 | 4 |
| 2 | 7 | 4 |
| 2 | 8 | 4 |
SELECT DISTINCT
O.OrgName,
Referral.ClientID,
Client.FirstName,
Client.LastName,
P.ProviderName AS 'School',
E.ProgramID,
LI.ListLabel AS 'Reason',
Race.ListLabel AS 'Race/Ethnicity',
Gender.ListLabel AS 'Sex/Gender',
[ServiceId],
(SELECT COUNT([ServiceID])
GROUP BY Referral.ClientID
HAVING COUNT([ServiceID]) >= 2) AS 'Number of Supports'
FROM
ProviderReferral Referral
JOIN
Provider P ON ReferFromProviderID = P.EntityID
JOIN
ProviderReferralExt ON Referral.ProviderReferralID = ProviderReferralExt.ProviderReferralID
INNER JOIN
MultiSelectValue MSV ON MSV.ContextID = Referral.ProviderReferralID
AND MSV.ContextTypeID = 87
AND MSV.ListID = 1000001179
INNER JOIN
Client ON Referral.ClientID = Client.EntityID
INNER JOIN
EnrollmentMember ON client.EntityID = EnrollmentMember.ClientID
INNER JOIN
Enrollment E ON EnrollmentMember.EnrollmentID = E.EnrollmentID
AND E.X_CMNonCM = 1
INNER JOIN
ListItem LI ON LI.ListValue = MSV.ListValue
AND LI.ListID = 1000001179
INNER JOIN
ListItem Race ON Race.ListValue = client.Race
AND Race.ListID = 1000000068
INNER JOIN
ListItem Gender ON Gender.ListValue = Client.Gender
AND Gender.ListID = 1
INNER JOIN
Service ON E.EnrollmentID = Service.EnrollmentID -- the supports table
JOIN
Organization O ON o.EntityID = p.OrganizationID
WHERE
P.OrganizationID = 33847
AND E.ProgramID = 1325
AND referral.DeletedDate = '9999-12-31'
AND o.DeletedDate = '9999-12-31'
AND enrollmentmember.DeletedDate = '9999-12-31'
ORDER BY
referral.ClientID, client.FirstName
【问题讨论】:
标签: sql-server join count