質問
私は私が入力された最新の日付と説明IDで明確な説明を取得するクエリを持っています。私はdisctinct一部を取得することができますが、私は日にMAXを使用してイムので、IDを取得しようとしているとのトラブルに遭遇します。ここでクエリがあります:
SELECT DISTINCT Resource.Description, MAX(arq.DateReferred) AS DateReferred, arq.AssessmentResourceID
FROM AssessmentXResource AS arq
INNER JOIN Resource ON arq.ResourceID = Resource.ResourceID
INNER JOIN Assessment AS aq
INNER JOIN [Case] AS cq ON aq.CaseID = cq.CaseID
INNER JOIN [Plan] AS pq ON cq.CaseID = pq.CaseID ON arq.AssessmentID = aq.AssessmentID
WHERE (pq.PlanID = 22)
GROUP BY Resource.Description, arq.AssessmentResourceID
ORDER BY Resource.Description
イムその単純だがイムはそれを見ていないことを確認ます。
解決
SELECT
Resource.Description,
arq.DateReferred AS DateReferred,
arq.AssessmentResourceID
FROM
Resource
INNER JOIN
AssessmentXResource AS arq
ON arq.ResourceID = Resource.ResourceID
AND arq.DateReferred = (
SELECT
MAX(DateReferred)
FROM
AssessmentXResource
WHERE
ResourceID = Resource.ResourceID
)
INNER JOIN
Assessment AS aq
ON arq.AssessmentID = aq.AssessmentID
INNER JOIN
[Case] AS cq
ON aq.CaseID = cq.CaseID
INNER JOIN
[Plan] AS pq
ON cq.CaseID = pq.CaseID
WHERE
(pq.PlanID = 22)
ORDER BY
Resource.Description
他のヒント
私は[ケース]テーブルに参加する理由を参照してくださいdoni'tので、私はそれを残してきました。あなたには、いくつかの理由のためにそれを必要とする場合は、それを再度追加することができます。
SELECT
RES.Description,
ARQ.DateReferred,
ARQ.AssessmentResourceID
FROM
AssessmentXResource ARQ
INNER JOIN Resource ON
ARQ.ResourceID = RES.ResourceID
INNER JOIN Assessment AQ ON
AQ.AssessmentID = ARQ.AssessmentID
INNER JOIN [Plan] PQ ON
PQ.CaseID = AQ.CaseID
LEFT OUTER JOIN AssessmentXResource ARQ2 ON
ARQ2.ResourceID = ARQ.ResourceID AND
ARQ2.DateReferred > ARQ.DateReferred
WHERE
PQ.PlanID = 22 AND
ARQ2.ResourceID IS NULL
これはあなたのデータで同じのResourceIDため、同一DateReferred値がある場合は望んとして機能しない場合があります。あなたはそのような状況のためのビジネスルールを思い付くし、それに合わせて適切にクエリを変更する必要があります。あなたがあなたのAssessmentXResource行のためのアセスメント、計画、およびケーステーブルの行に一致していることを保証していない場合にも、これはあなたのクエリからわずかに異なる動作します。あなたはそれがそれらのためにARQ2する参加し、それがパフォーマンスに影響しますし、また、もう少し複雑であるに追加することで動作させることができます。あなたは、コメントを投稿し、私はそれを処理するために、クエリを変更することができますまたは多分あなたは自分でそれを把握することができます。
ということが必要な場合短い答え:最大機能あなたがIDSによってグループ化されている場合は文句を言わない仕事。あなたは、各個別のIDの最大値を返すことになります。すなわち、すべて
あなたはサブクエリの表現を変更する必要があるかもしれませんが、あなたのアイデアを得る。
表から選択ID、ヴァル ここで、ヴァル=(テーブルからMAX(ヴァル)を選択)