2013-05-22 4 views
3

오늘 날짜의 값에서 전날의 값을 뺀 값에 기초한 계산에 문제가 있습니다
여기에 쿼리가 있습니다. 샘플 데이터 및 쿼리 결과 당신은 당신이 처음 row 6에 실패 할 때까지 계산이 작동하는 것을 볼 수 설정 결과를 보면 here이전 날짜를 기반으로 한 mysql 계산

SELECT pd.id,pd.price_date,pd.name_id,pd.class_id,pd.currency_id,pd.price, 
     pd.price - (SELECT price 
        FROM price_data as x 
        WHERE x.price_date < pd.price_date 
        AND x.name_id  = pd.name_id 
        AND x.class_id  = pd.class_id 
        AND x.currency_id = pd.currency_id 
     HAVING MAX(x.price_date)) as `change` 
     FROM price_data as pd 
     WHERE pd.name_id ='BILL' 

     ORDER bY pd.name_id,pd.class_id,pd.currency_id,pd.price_date  

. 이전 변경 사항을 현재 변경 사항에 추가하기 시작한 것 같습니다.

날짜 결정에 문제가 있습니까? 당신이 원하는

답변

0

쿼리는 다음과 같습니다

SELECT pd.id,pd.price_date,pd.name_id,pd.class_id,pd.currency_id,pd.price, 
     pd.price - (SELECT price 
        FROM price_data as x 
        WHERE x.price_date < pd.price_date 
        AND x.name_id  = pd.name_id 
        AND x.class_id  = pd.class_id 
        AND x.currency_id = pd.currency_id 
        order by x.price_date desc 
        limit 1 
        ) as `change` 
FROM price_data as pd 
WHERE pd.name_id ='BILL' 
ORDER bY pd.name_id,pd.class_id,pd.currency_id,pd.price_date; 

원래 쿼리에 문제가 있나요? 음, having 절은 price_date의 최대 값이 0이 아닌지 확인하기 때문에 작동하지 않습니다. 원하는 것을 얻으려면 데이터를 정렬하고 관심이있는 값 하나를 가져와야합니다.

+0

감사합니다. 고든. – jimlongo

관련 문제