Этот запрос работает безупречно на SQL Server 2014 (http://sqlfiddle.com/#!6/19de4/1), но у меня проблемы с версией 2008 года, жалуется «Неправильный синтаксис рядом с порядком». Что мне не хватает?SQL Server 2008 - ошибка с использованием OVER с GROUP BY
CREATE TABLE t (id BIGINT, cliente VARCHAR(100), vendas FLOAT);
INSERT INTO t VALUES (1, 'vitor', 234.3);
INSERT INTO t VALUES (2, 'emerson', 456.2);
INSERT INTO t VALUES (3, 'thiago', 6789.3);
INSERT INTO t VALUES (4, 'john', 5423.0);
INSERT INTO t VALUES (5, 'fulano', 3467.8);
SELECT *, CASE WHEN vendas_agrupadas <= 0.7 THEN 'A' ELSE
(CASE WHEN vendas_agrupadas <= 0.9 THEN 'B' ELSE 'C' END) END
AS "Grupo ABC" FROM (
SELECT *, SUM(vendas) OVER (ORDER BY vendas desc)
/(SUM(vendas) OVER()) AS vendas_agrupadas FROM t) asdf;
Добавление данных в SQL Fiddler упростило работу - спасибо! – CindyH
@CindyH стыдно, что у него нет версии SQL Server 2008, но сайт отличный –