2014-10-06 5 views
0

누군가가 나를 도울 수 있기를 바랍니다. 하루 종일 일하고 싶습니다.날짜 범위 반환 값 사이의 최대 값 및 날짜 찾기

최대 값과 특정 날짜 범위 사이의 최대 값이 연결되는 날짜와 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 

같은 테이블이 그리고 결과가 있어야한다 여기

내 코드, 그리고 나는 많은 다른 버전을 시도했지만 여전히 하나 개 이상의 ID와 날짜를 반환 (최대 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 표준 형식으로 저장하는 것이 좋습니다. –

+0

NOLOCK을 일관되게 사용하지 않는 이유는 무엇입니까? 동일한 기본 테이블을 여러 번 쿼리하지만 그 중 하나만 해당 힌트를 갖고 있습니까? FWIW, 주기적으로 누락 및/또는 중복 된 데이터를 확인하지 않는 한 전혀 사용하지 않는 것이 좋습니다. –

답변

0

나는 당신의 테이블 이름이 "데이터"라고 가정했습니다 :

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

특정 요구 사항과 일치하도록 날짜를 변경해야합니다.