2017-02-02 1 views
0

여기에 다음 쿼리를 사용하여 데이터를 가져와 매주 값을 표시합니다. 그러나 새해가 있고 결과에 주 50, 51, 52 of 2016과 주 1, 2, 3 of 2017이 표시되면 주 번호로 인해 이됩니다. 즉, 2016 년 이전에 2017 결과가 표시됩니다. 어떻게 변경합니까?SQL 날짜 부분 (일주일), 연말 ORDER BY?

SELECT 
    DATEPART(wk, date) AS number, 
    SUM((kg * rep * sett)) AS weight, 
    SUM(kg/max * rep * sett) AS avg, 
    SUM((rep * sett)) AS reps, 
    MAX(kg/max) AS peak 
FROM 
    Test 
WHERE 
    date BETWEEN @0 AND @1 AND exercise < 4 
GROUP BY DATEPART(wk, date) 
당신은 연도 부분의 합계에 의해 주문을 추가 할 수
+1

귀하의 검색어에 주문 조항이 없습니다 ... –

+0

로 주문해야합니까? 날짜가 작동하지 않았기 때문에 :/@ZoharPeled –

+0

가능한 '@ 0 AND @ 1'범위에 달려 있습니다. jan2015에서 jan 2017까지 확장 할 수 있으며 결과로 원하는대로 할 수 있습니까? – Serg

답변

5

없는 가장 우아한 솔루션,하지만 당신은 필드에 올해 당신 그룹 만 포함 할 수 :

: 그냥 완전히 별도의 필드를 치료 (아마 더 나은)

SELECT 
    CONVERT(VARCHAR,DATEPART(year, date)) + '_' + CONVERT(VARCHAR,DATEPART(wk, date)) AS Year_Week, 
    SUM((kg * rep * sett)) AS weight, 
    SUM(kg/max * rep * sett) AS avg, 
    SUM((rep * sett)) AS reps, 
    MAX(kg/max) AS peak 
FROM 
    Test 
WHERE 
    date BETWEEN @0 AND @1 AND exercise < 4 
GROUP BY CONVERT(VARCHAR,DATEPART(year, date)) + '_' + CONVERT(VARCHAR,DATEPART(wk, date)) 
ORDER BY CONVERT(VARCHAR,DATEPART(year, date)) + '_' + CONVERT(VARCHAR,DATEPART(wk, date)) 

또는

+0

이 오류를 줬습니다. '쿼리 구문 분석 중 오류가 발생했습니다. 마지막 예제에서 [토큰 줄 번호 = 1, 토큰 줄 오프셋 = 37, 토큰 오류 = DATEPART]'! 그게 뭐야? –

+0

SQL Server Management Studio (SSMS)를 사용하고 있습니까? – 3N1GM4

+0

SQL 서버 컴팩트 –

0

:

SELECT 
    DATEPART(wk, date) AS number, 
    SUM((kg * rep * sett)) AS weight, 
    SUM(kg/max * rep * sett) AS avg, 
    SUM((rep * sett)) AS reps, 
    MAX(kg/max) AS peak 
FROM 
    Test 
WHERE 
    date BETWEEN @0 AND @1 AND exercise < 4 
GROUP BY DATEPART(wk, date) 
order by max(datepart(year,date)), number; 

은 위 그러나 그들은 아마 당신이 원하지 않는 것을 (다른 해에 빠질 경우에도, 같은 주 번호와 함께 데이터를 집계). 다른 연도 데이터를 별도로 유지하려는 경우 예를 들어 출력에 연도 열을 추가 할 수 있습니다. 아마도

SELECT 
    datepart(year,date) as year, 
    DATEPART(wk, date) AS number, 
    SUM((kg * rep * sett)) AS weight, 
    SUM(kg/max * rep * sett) AS avg, 
    SUM((rep * sett)) AS reps, 
    MAX(kg/max) AS peak 
FROM 
    Test 
WHERE 
    date BETWEEN @0 AND @1 AND exercise < 4 
GROUP BY datepart(year,date), DATEPART(wk, date) 
order by year, number; 
+0

)에도 불구하고 연 단위로 주문해야합니다. 해당 연도에 동일한 주에 해당하는 경우 다른 연도의 레코드를 함께 그룹화하지 않습니까? – 3N1GM4