2013-02-25 2 views
1

가격, 날짜, 타임 스탬프, 입력 월 및 입력 연도가있는 테이블이 있습니다. 이 달에 1 들어가도록테이블에서 매월 합계를받는 SQL

+++++++++++++++++++++++++++++ 
Price | Date | Month | Year | 
+++++++++++++++++++++++++++++ 
9.00 |343345| 2 | 2013 | 
3.00 |343445| 2 | 2013 | 
4.00 |343245| 1 | 2013 | 
1.00 |342245| 1 | 2013 | 
5.00 |333355| 12 | 2012 | 

지금까지 나는이 월별 가격 합계를 나열해야 문제가 BY GROUP이다 나는 결과를 필요로하는 12 다음 달 2 어디에서 내려 달, 그 결과를 다시 정렬 현재 달, 매월.

"SELECT month,SUM(price), FROM table GROUP BY month ORDER BY date DESC " 

PHP가 도움이된다면 사용하고 있습니다.

답변

0

문제는 날짜 필드가 datetime으로 저장되어 있지 않습니다. 그것으로 주문하는 대신, 대신 년 및 월 필드를 주문하십시오 (나는 두 필드로 모두 그룹화하려고합니다). 년 및/또는 월이 VARCHAR로 저장하는 경우

SELECT year,month,SUM(price) 
FROM table 
GROUP BY year,month 
ORDER BY year DESC, month DESC 

, 다음이를 캐스트 - 나는 사람들이 생각 정수로 저장됩니다 의심 :

1

월을 숫자 대신 텍스트로 취급합니다. 그것을 정수로 캐스팅하면 제대로 정렬됩니다.

SELECT CAST(Month as int) as Month, SUM(PRICE), FROM table Group by month ORDER BY CAST(MONTH as int) desc 
0

INT 데이터 형식에 달 캐스트 :

SELECT month,SUM(price), SUM(price), FROM table GROUP BY month ORDER BY cast(month as UNSIGNED) DESC 

더 : CAST 나는 비슷한 문제가 있었다

0

. 나는 '날짜'유형으로 다른 열을 추가하고 날짜의 모든 다른 필드를 변환하여 해결했습니다. 그런 다음 시간 범위 내에서 선택을 할 수 있습니다.