2009-02-03 35 views
1

我有一個查詢,我想通過輸入的最新日期和描述ID得到不同的描述。我可以得到disinctct部分,但我遇到了麻煩,試圖獲得ID,因爲即時使用MAX日期。以下是查詢:使用日期字段獲取不同的記錄?

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 

我確定它很簡單,但我沒有看到它。

回答

1
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 
0

我沒有看到加入[案例]表的原因,所以我把它拋出了。如果您出於某種原因需要它,可以將其添加回去。

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添加連接來使其工作,但這會影響性能,而且會稍微複雜一些。如果你需要,然後張貼評論,我可以改變查詢來處理它,或者你可以自己解決。

0

簡短的回答:最大功能不會工作,如果你是由ID分組。您將最終返回每個不同ID的最大值。即所有東西

您可能需要更改子查詢表示,但您明白了。

從表 中選擇id,val其中val =(從表中選擇max(val))

相關問題