2016-03-22 2 views
1

Я хочу вернуть год, а затем конец недели, а затем группу по году, а затем конец недели. Проблема с этим кодом заключается в том, что он делает все, кроме сортировки.Ошибка форматирования и сортировки даты SQL

SELECT datepart(YEAR, CONVERT(DATE, PH.CreatedOn)) Year, 
    Convert(varchar(2), Datepart(month, DATEADD(D, -1 * DATEPART(dw, PH.createdon) + 7, PH.createdon)), 101) + '/' + Convert(varchar(2), Datepart(Day, DATEADD(D, -1 * DATEPART(dw, PH.createdon) + 7, PH.createdon)), 101) [Week Processed], 
    COUNT(PH.new_purchasehistoryid) AS 'Registrations' 
FROM new_purchasehistory PH 
GROUP BY DATEPART(YEAR, CONVERT(DATE, PH.createdon)), Convert(varchar(2), Datepart(month, DATEADD(D, -1 * DATEPART(dw, PH.createdon) + 7, PH.createdon)), 101) + '/' + Convert(varchar(2), Datepart(Day, DATEADD(D, -1 * DATEPART(dw, PH.createdon) + 7, PH.createdon)), 101) 

ORDER BY DATEPART(YEAR, CONVERT(DATE, PH.createdon)) DESC, Convert(varchar(2), Datepart(month, DATEADD(D, -1 * DATEPART(dw, PH.createdon) + 7, PH.createdon)), 101) + '/' + Convert(varchar(2), Datepart(Day, DATEADD(D, -1 * DATEPART(dw, PH.createdon) + 7, PH.createdon)), 101) desc 

Вот результат. Думаю, мне нужна еще одна цифра. Есть ли более простой способ?

Year Week Processed Registrations 
2016 2/6  5935 
2016 2/27 4288 
2016 2/20 4205 
2016 2/13 3177 
2016 1/9 10422 
2016 1/30 3834 
2016 1/23 3411 
2016 1/16 2718 
2015 9/5  8560 
2015 9/19 6245 
2015 9/12 7427 
2015 8/8  6489 
2015 8/29 6558 

ответ

0

Вы можете сделать жизнь проще с помощью подвыборов. В случае, если выбранные вами колоды должны быть в выборе, вам нужен другой подвыбор.

SELECT 
    T.year, 
    Convert(varchar(2), T.month, 101) + '/' + Convert(varchar(2), T.day, 101) Week, 
    COUNT(*) Registrations 
FROM (
    SELECT 
     datepart(YEAR, CONVERT(DATE, PH.CreatedOn)) Year, 
     Datepart(month, DATEADD(D, -1 * DATEPART(dw, PH.createdon) + 7, PH.createdon)) Month, 
     Datepart(Day, DATEADD(D, -1 * DATEPART(dw, PH.createdon) + 7, PH.createdon)) Day 
    FROM new_purchasehistory PH 
) T 
GROUP BY T.Year, T.month, T.day 
ORDER BY T.Year DESC, T.Month DESC, T.Day DESC 
Смежные вопросы