質問

私は私が入力された最新の日付と説明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(ヴァル)を選択)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top