2013-03-15 11 views
1

При запуске этого выберитеSQL Server Select Max суммы

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 должным образом –

ответ

1

Если вы собираетесь использовать этот запрос, чтобы когда-нибудь вытащить более одного PRODUCT_ID то это будет возвращать только релевантные результаты. Если ваш конечный результат состоит только в том, чтобы вернуть один элемент, используйте ответ Марцина.

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

awesome Я думаю, что сработал !!! Большое спасибо – user2175554

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

+0

@Kaf - Название говорит Макс из суммы, хотя. –

+0

Правильно, неправильная колонка заказа ... Но заголовок * Макс суммы * ... Спасибо! – MarcinJuraszek