Получить значение группы свертки в SQL Server

#sql #sql-server

#sql #sql-сервер

Вопрос:

У меня есть таблица со следующими данными:

Имя Оценка
A 2
B 3
A 1
B 3

Мне нужен запрос, который возвращает следующий вывод.

Имя Оценка
A 2
A 1
Промежуточный итог: A 3
B 3
B 3
Промежуточный итог: B 6

Я могу получить «Промежуточный итог» с group by rollup помощью запроса, но я хочу получить промежуточный итог вместе со значением столбца группы.

Пожалуйста, помогите мне с некоторым кодом SQL

Ответ №1:

Если score имеет не более одного значения для name, you can use ГРУППИРУЮЩИХ НАБОРОВ `:

 select name, sum(score) as score
from t
group by grouping sets ((name, score), (name));
 

Если name никогда null , я бы просто использовал:

 coalesce(name, 'Grouping '   name)
 

В противном случае вам нужно использовать grouping() .

Комментарии:

1. Этот запрос выдаст несколько групп, но я хочу значение группы в строке промежуточного итога.

2. @Hardik Изменить select name на select case when GROUPING_ID(name, score) = 1 then 'subtotal: ' name else name end