2013-03-15 55 views
1

的SQL服務器選擇最多當我運行這個選擇一個總和

SELECT  
    D.Product_ID p_id 
    ,D.Green_Sheet_ID gs_id 
    ,SUM (P.prepress_amt) amt 

    FROM GS_Prepress AS P INNER JOIN 
         GS_Data AS D ON P.green_sheet_id = D.Green_Sheet_ID 

    WHERE 
    Product_ID ='194456' 
    GROUP BY D.Product_ID, D.Green_Sheet_ID 

我得到這個...

|p_id | gs_id |amt  | 
|-------|-------|---------| 
|194456 | 5721 |33524.00 | 
|194456 | 7484 |47524.00 | 

我只想選擇具有最大(gs_is)行,所以我只得到這個結果?

|p_id | gs_id |amt  | 
|-------|-------|---------| 
|194456 | 7484 |47524.00 | 
+0

加入TOP(1)和ORDER BY正確 – 2013-03-15 21:05:51

回答

1

如果你要使用此查詢永遠拉一個以上的product_id,那麼這將只返回相關結果。如果你的最終結果只有一個項目返回,然後使用Marcin的答案。

SELECT D.Product_ID p_id 
, D.Green_Sheet_ID gs_id 
,SUM (P.prepress_amt) amt 
FROM GS_Prepress AS P 
    INNER JOIN GS_Data AS D ON P.green_sheet_id = D.Green_Sheet_ID 
    INNER JOIN (SELECT MAX(Green_Sheet_ID) AS gs_ID 
       FROM GS_Date 
       GROUP BY Product_ID) G ON G.Gs_ID = D.Green_Sheet_ID 

WHERE Product_ID ='194456' 
GROUP BY D.Product_ID, D.Green_Sheet_ID 
+0

真棒我認爲工作!非常感謝 – user2175554 2013-03-15 21:14:58

5

秩序的結果,並採取TOP(1)

SELECT TOP(1) 
    D.Product_ID p_id, 
    D.Green_Sheet_ID gs_id, 
    SUM (P.prepress_amt) amt 
FROM 
    GS_Prepress AS P 
INNER JOIN 
    GS_Data AS D ON P.green_sheet_id = D.Green_Sheet_ID 
WHERE 
    Product_ID ='194456' 
GROUP BY 
    D.Product_ID, D.Green_Sheet_ID 
ORDER BY 
    gs_id DESC 
+0

我覺得應該是'爲了通過gs_id desc' – Kaf 2013-03-15 21:07:30

+0

@Kaf - 標題說明了一筆最多不過。 – 2013-03-15 21:08:21

+0

對,錯訂單欄...但標題是*最大總和* ...謝謝! – MarcinJuraszek 2013-03-15 21:08:24