SQL distinct for 2 fields in a databaseSQL明白で明確でない列の選択
上記のリンクは、私が探しているものとはあまり離れていないと思います。私が必要と信じていることについて話す投稿がありました。それは私が集計で区別する必要がない私のフィールドを持っている必要がありますし、私は別のグループ句にする必要がありますしたいものを言う。
私が書いていない次の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.
は私が得る、それは集約関数ではありません。私のやり方が分からないのは、それを集約して取得することです。知識があれば、クエリの結果は変わります。
誰でも助けることができ、喜んで提供していただけるお役に立てれば幸いです!
集計を追加すると結果は変わりますが、 'group by'を追加すると既に変更されています。結果を変更したくない場合は、単にクエリを変更しないでください。変更する場合は、結果がどのように表示され、どのように表示するかをよく説明してください。短いサンプルで最高です。 –
合意した、あなたはGROUP BYステートメントを追加して何を達成しようとしていますか?どのシナリオで複数のレコードを取得したいのですか? – MatBailie