имеет таблицу, как показано ниже, где мне нужно взять сумму col2 на основе группы. Но он принадлежит цепочке, если цепь прерывается, тогда сумма будет ограничена последовательностью.Группа по вхождению строки
DECLARE @TabVar TABLE
(
ID INT IDENTITY(1,1), col1 varchar(20), Col2 INT
)
INSERT INTO @TabVar
VALUES ('a',2),('a',3),('b',4),('b',2),('a',6),('a',3),('b',3)
SELECT * FROM @TabVar
Expected output:
COL1 SUM(COL2)
A 5
B 6
A 9
B 3
Я пытался сделать это с Рейтинге функций, но ранжирование осуществляется с помощью Order, по которому аккумулировать в общей сложности Col1
'идентичностей может не быть consecutive': проверить это http://stackoverflow.com/questions/14642013/ почему-это-там разрядники-в-моих идентичность столбца значений. в определенном случае это потерпит неудачу. например, взять эти данные и выполнить запрос: DECLARE @TabVar TABLE ( ID INT, col1 VARCHAR (20), Col2 INT ) INSERT INTO @TabVar VALUES (1, 'а', 2), (3, 'а', 3), (4, 'B', 4), (5, 'B', 2), (6, 'а', 6), (7, 'а', 3), (8, 'b', 3) –
@DeepakPawar - мое решение основано на текущем образце, предоставленном OP. Здесь 'id' будет последовательным, так как не задействовано« RESEED »или транзакционный откат, которые являются основными причинами идентичности, которые не должны быть последовательными. более общим решением будет 'row_number() over (order by id)' – ughai