powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с функцией PIVOT
3 сообщений из 3, страница 1 из 1
Помогите разобраться с функцией PIVOT
    #39911028
PauL Etta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишу простой запрос. Необходимо вывести таблицу вида: месяц, количество чеков продаж, количество чеков возврата, итог (общее количество чеков). Исходная таблица:
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
Помогите разобраться с функцией PIVOT
    #39911032
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Помогите разобраться с функцией PIVOT
    #39911048
PauL Etta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff, спасибо, как собирать сводные без PIVOT еще предстоит учиться, но решил проблему с PIVOT простой SUM (Возврат + Продажи) в SELECT
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с функцией PIVOT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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