Отличный SQL для 2 полей в базе данных
Ссылка выше, я считаю, не слишком далека от того, что я ищу. Был пост, в котором говорилось о том, что мне нужно. В нем говорится, что у меня должны быть поля, которые НЕ должны различаться в совокупности, а затем те, которые я хочу различить, должны быть в предложении group by.
Следующий SQL, который я НЕ написал, работает для предоставления нам данных, которые мы хотим. Я добавил строку: группа по pf.PatientID, pf.SubjectID
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[getResearchAssistantProgressReportByStudyAndLoation]
(
@StudyId int,
@LocationID int,
@ResearchAssistantID int,
@StartDate datetime,
@EndDate datetime
)
RETURNS TABLE
AS
RETURN
(
Select
pf.PatientID, pf.SubjectID, pf.ResearchAssistantID,
study.form, pf.dateAvailable, pf.DateComplete,
CAST((CASE WHEN pf.dateavailable + convert(int,study.daystoexpire,101) < GETDATE() and pf.dateComplete is null then 'True' else 'False' END) AS varchar(10)) as Expired
FROM
PatientForms pf
INNER JOIN (SELECT * FROM getFormsINStudy(@StudyId)) as study
on pf.formID = study.FormID
INNER JOIN UserLocations ul on pf.patientid = ul.userid
WHERE
ul.LocationID = @LocationID
and (ResearchAssistantID = @ResearchAssistantID or @ResearchAssistantID = -1)
and (pf.DateAvailable + convert(int,study.daystoexpire,101)) > @StartDate
and (pf.DateAvailable + convert(int,study.DAYSTOEXPIRE,101)) < @EndDate
group by pf.PatientID, pf.SubjectID
)
Это дает мне ошибку:
Msg 8120, Level 16, State 1, Procedure getResearchAssistantProgressReportByStudyAndLoation, Line 20
Column 'PatientForms.ResearchAssistantID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Я понял, почему у меня есть эта ошибка, она не в статистической функции. То, что я не уверен в том, как это сделать, это получить его в совокупности, что, насколько мне известно, изменит результаты моего запроса.
Любая помощь, которую кто-либо может и желает предложить, очень ценится!