Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с функцией PIVOT / 3 сообщений из 3, страница 1 из 1
05.01.2020, 19:44
    #39911028
PauL Etta
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с функцией PIVOT
Пишу простой запрос. Необходимо вывести таблицу вида: месяц, количество чеков продаж, количество чеков возврата, итог (общее количество чеков). Исходная таблица:
SELECT*
FROM Table_1
Месяц Тип чека №Чека Товар Сумма
1 Продажа R1 1 100
1 Продажа R1 2 10
1 Продажа R2 1 110
1 Продажа R2 2 20
1 Возврат C1 1 120
2 Продажа R3 1 130
2 Возврат R4 1 140
Использую функцию PIVOT для исходной таблицы, но посчитать итог ни как не получается.

SELECT Месяц, [Возврат], [Продажа]
FROM
(
SELECT Месяц,
[Тип чека] AS [Тип операции],
[Тип чека]
FROM Table_1
) Типы
PIVOT
(
COUNT ([Тип Чека]) FOR [Тип Операции] IN ([Возврат], [Продажа])
) Операции
GROUP BY Месяц, [Возврат], [Продажа]

Получается:
Месяц Возврат Продажа
1 1 4
2 1 1

Не пойму как добавить колонку чтобы вывести итог в СТРОКЕ)
...
Рейтинг: 0 / 0
05.01.2020, 19:55
    #39911032
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с функцией PIVOT
PauL Etta,


pivot - это синтаксический сахар, используйте конструкцию кода в которую оптимизатор преобразовывает pivot
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
drop table #tmp if exists;
create table #tmp (
      [month] int,
      [type] varchar(255),
      [number] char(2),
      [goods] int,
      [amount] int
);

insert into #tmp values
(1, 'Продажа', 'R1', 1, 100),
(1, 'Продажа', 'R1', 2, 10),
(1, 'Продажа', 'R2', 1, 110),
(1, 'Продажа', 'R2', 2, 20),
(1, 'Возврат', 'C1', 1, 120),
(2, 'Продажа', 'R3', 1, 130),
(2, 'Возврат', 'R4', 1, 140);

select
      [month],
      sum(case when [type] = 'Продажа' then 1 end) as [sell_count],
      sum(case when [type] = 'Возврат' then 1 end) as [return_count],
      count(1) as [all_count]
from #tmp
group by [month];
...
Рейтинг: 0 / 0
05.01.2020, 21:37
    #39911048
PauL Etta
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с функцией PIVOT
felix_ff, спасибо, как собирать сводные без PIVOT еще предстоит учиться, но решил проблему с PIVOT простой SUM (Возврат + Продажи) в SELECT
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с функцией PIVOT / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]