2014-10-06 153 views
0

我希望有人能幫助我,我一直在這一整天工作。找到日期範圍內的最大值和日期返回mutliplie記錄

我需要獲取最大值,以及最大值與特定日期範圍之間關聯的日期和ID。

這裏是我的代碼,我已經嘗試了許多不同的版本,但它仍返回多個ID和日期

SELECT distinct bw_s.id, avs.carProd, cd_s.RecordDate, 

         cd_s.milkProduction as MilkProd, 
         cd_s.WaterProduction as WaterProd 

       FROM tblTest bw_s 

        INNER JOIN tblTestCp cd_s WITH(NOLOCK) 
        ON bw_s.id=cd_s.id 
        AND cd_s.recorddate BETWEEN '08/06/2014' AND '10/05/2014' 


        Inner Join 
        (select id, max(CarVol) as carProd 
        from tblTestCp 
        where recorddate BETWEEN '08/06/2014' AND '10/05/2014' 
        group by id) avs 

        on avs.id = bw_s.id 



        order by id 

我有臺這樣的

id RecordDate carProd  MilkProd WaterProd 
47790 2014-10-05 132155   0 225 
47790 2014-10-01 13444  0 0 
47790 2014-08-06 132111  10 100 
47790 2014-09-05 10000  500 145 
47790 2014-09-20 10000  800 500 
47791 2014-09-20 10000  300 500 
47791 2014-09-21 10001  400 500 
47791 2014-08-21 20001  600 500 

而且結果應該是(max carprod)

id RecordDate carProd   MilkProd WaterProd 
47790 2014-10-05 132155  0 225 
47791 2014-08-21 20001  600 500 
+1

你能編輯你的問題並添加樣本數據和期望的結果嗎?我也建議你把你的日期常量以YYYY-MM-DD的ISO標準格式。 – 2014-10-06 20:10:41

+0

爲什麼NOLOCK的使用不一致?您正在多次查詢同一個基表,但只有1個提示? FWIW,我建議不要使用它,除非你可以定期地丟失和/或重複數據。 – 2014-10-06 21:13:50

回答

0

我假設你的表的名字是「Data」:

SELECT 
    * 
FROM 
    Data 
WHERE 
    Data.RecordDate BETWEEN '2014-08-21' AND '2014-10-01' 
ORDER BY 
    Data.carProd DESC 
LIMIT 1; 

確保更改日期以符合您的特定要求。

相關問題