Я попытаюсь ответить на это ....
YEAR(Date) + DATEPART(wk, Date) AS 'Week Sort',
Вышеприведенное утверждение не имеет смысла.Я подозреваю, что вы путаете конкатенацию строк с добавлением чисел, то есть YEAR(Date) + DATEPART(wk, Date)
дает вам 2019 + 10 = 2029, что не то, что вы ожидаете, но затем я также замечаю, что
YEAR(Date) * 12 + MONTH(Date) -1 AS 'MM-YY Sort'
закодировано правильно.
Чтобы объединить числа года и месяца вместе, вам нужно сделать эквивалент строки, добавляемой или другими словами, аналогично тому, что сделано для 'MM-YY Сортировка'.
Арифметически (потому что вывод YEAR
и DATEPART(wk
функции числовые) вам нужно сделать следующее:
YEAR(Date) * 100 + DATEPART(wk, Date) AS 'Week Sort'
Результат для 10-й недели будет 2019 * 100 + 10 = 201900 + 10 = 201910 и 201911 для 11-й недели.
Вы также можете достичь того же результата, используя конкатенацию строк:
CAST( YEAR(Date) AS VARCHAR ) + RIGHT( '0' + CAST( DATEPART(wk, DATE ) AS VARCHAR ), 2 ) AS 'Week Sort'