Я пытаюсь добавить несколько столбцов в таблицу, и я немного по-другому, но не понимаю, почему это происходит. Это стартовый стол пример ...Пытаясь сделать математическую сумму, используя Partition By и Row_Number
Date Name Amount
1/2/2015 Andy 148
2/5/2015 Andy 188
2/11/2015 Andy 154
1/15/2015 John 136
2/5/2015 John 176
1/7/2015 John 134
1/19/2015 John 251
2/21/2015 Carlos 120
2/15/2015 Carlos 211
1/8/2015 Carlos 120
1/2/2014 Andy 151
2/5/2014 Andy 281
2/11/2014 Andy 298
1/15/2014 John 292
2/5/2014 John 134
1/7/2014 John 281
1/19/2014 John 101
2/21/2014 Carlos 137
2/15/2014 Carlos 108
1/8/2014 Carlos 292
Я хочу взять таблицу выше и ...
1) Сортировать по Год, имя, тогда Значение 2) На основании # 1, Добавить «упорядоченная» колонна, которая дает ряд для каждого набора года и названия, где значение устанавливается отсортированным по возрастанию 3) столбец Multiplied множится суммой упорядоченного 4) Сложите умноженную колонку и сумма для каждого набора
Результат ...
Date Year Name Amount Ordered Multiplied Sum
1/2/2014 2014 Andy 151 1 151 1607
2/5/2014 2014 Andy 281 2 562 1607
2/11/2014 2014 Andy 298 3 894 1607
2/15/2014 2014 Carlos 108 1 108 1258
2/21/2014 2014 Carlos 137 2 274 1258
1/8/2014 2014 Carlos 292 3 876 1258
1/19/2014 2014 John 101 1 101 2380
2/5/2014 2014 John 134 2 268 2380
1/7/2014 2014 John 281 3 843 2380
1/15/2014 2014 John 292 4 1168 2380
1/2/2015 2015 Andy 148 1 148 1020
2/11/2015 2015 Andy 154 2 308 1020
2/5/2015 2015 Andy 188 3 564 1020
1/8/2015 2015 Carlos 120 1 120 993
2/21/2015 2015 Carlos 120 2 240 993
2/15/2015 2015 Carlos 211 3 633 993
1/7/2015 2015 John 134 1 134 1938
1/15/2015 2015 John 136 2 272 1938
2/5/2015 2015 John 176 3 528 1938
1/19/2015 2015 John 251 4 1004 1938
У меня есть все, кроме последнего столбца, как я получаю ошибку ...
'Недопустимое выражение вблизи row_number.
SQL для 'Заказал' ...
ROW_NUMBER() OVER (Partition BY Name, DATEPART(YEAR, Date) ORDER BY Amount) AS 'Ordered'
SQL для 'Умножить' ...
Amount * Ordered AS Multiplied
Теперь я мог бы думать об этом наивно, но я думал, что я мог бы просто добавить a line, подобный этой ...
sum(Multiplied) OVER (Partition BY Name, DATEPART(YEAR, Date) ORDER BY Amount) AS 'Sum'
Но я продолжаю упоминать об ошибке. Любые идеи, как обращаться? Я могу услышать другие способы обработки данных. Меня интересует только последняя колонка
Спасибо за этот Гордон! Это сработало. Я думаю, вы хотели обозначить пятую строчку как «seqnum». Это отбросило меня на секунду, но потом поняло, что вы имели в виду. Я добавил порядок в строке суммы, чтобы упорядочить наборы порядковым номером, но независимо от того, какие продукты и итоги были правильными. Спасибо! – cpd1