powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сводная таблица
48 сообщений из 48, показаны все 2 страниц
Сводная таблица
    #39653687
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня, друзья. Я пока ещё нуб в sql запросах, прошу помочь или наставить на путь истинный.

Написал запрос

SELECT to_char(cc.date, 'YYYY-MM'), ca.company, sum(cc.total_with_vat), cc.account, cc.service
FROM cc
left join ca
on cc.account = ca.account
where cc.account like '200%' and cc.service ='IP' and ca.company like '%Новосибирск%'
group by to_char(cc.date, 'YYYY-MM'), cc.account, cc.service, ca.company


Всё это выгружается в формате:
2016-01|Новосибирск|300|1|IP
2016-01|Новосибирск|500|2|IP
.. |Новосибирск|800|3|IP

Мне нужно эти данные выгрузить в эксель, проблема в том, чтобы выгрузить историю, необходимо выгружать около 10 раз, используя limit и offset, чтобы по количеству строк влазило на лист экселя

как можно сделать так, чтобы таблица выгружалась в формате, где даты будут в стобцах, то есть: 2016-01|2016-02 и т.д., а в строках соответственно остальные показатели, таким образом можно всё выгрузить за один запрос.

Почитал в интернете инфу, всё написано достаточно сложно для моего восприятия, поскольку я пока что не знаю многих тонкостей.

Если есть у кого свободные 10-15 минут, уделите время или киньте ссылок, где это более менее доступным языком описано (именно на базе postgresql)
...
Рейтинг: 0 / 0
Сводная таблица
    #39653689
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.А выгрузить один раз, а потом уже в EXELe разбить по страницам?
2. пивот.
...
Рейтинг: 0 / 0
Сводная таблица
    #39653691
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
o.makarov,

в общем случае - простых путей нет.
в частных случаях - можно использовать PIVOT, либо его "самодельные" аналоги через CASE и группировку.

Примитивные и интуитивно-понятные вариант реализации можно посмотреть тут , или тут .
не совсем по PostgreSQL, но смысл вполне себе ясен... ;)

Если число столбцов заведомо неизвестно, то смотреть в сторону динамического запроса...
...
Рейтинг: 0 / 0
Сводная таблица
    #39653694
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

поясните, если не сложно, я выгружаю через pg_admin в csv, потом когда открываю файл через эксель, он пишет, что данные обрезаны из-за того, что строк не хватает

Вообще конечно хочу научиться в формате сводной делать, но пока такой вариант тоже подойдёт
...
Рейтинг: 0 / 0
Сводная таблица
    #39653695
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,

спасибо, обязательно почитаю)
...
Рейтинг: 0 / 0
Сводная таблица
    #39653839
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо крупно написать на форуме: ПОКАЖИТЕ ИСХОДНЫЕ ТАБЛИЦЫ И ЖЕЛАЕМЫЙ РЕЗУЛЬТАТ
только тогда вам смогут помочь

превратили приличное место в форум телепатов, тьфу
...
Рейтинг: 0 / 0
Сводная таблица
    #39653968
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tip78,

запрос:

SELECT to_char(cc.date, 'YYYY-MM'), ca.company, sum(cc.total_with_vat), cc.account, cc.service
FROM cc
left join ca
on cc.account = ca.account
where cc.account like '200%' and cc.service ='IP' and ca.company like '%Новосибирск%'
group by to_char(cc.date, 'YYYY-MM'), cc.account, cc.service, ca.company


Что выгружает:
to_char base_company sum account_number service2016-01 Сибирские Сети Новосибирск 300 2E+12 IP2016-01 Сибирские Сети Новосибирск 300 2E+12 IP2016-01 Сибирские Сети Новосибирск 635 2E+12 IP

Что нужно:

base_company account_number 2016-01 2016-02 2016-03 2016-04 2016-05 2016-06 2016-07 2016-08 2016-09 2016-10 2016-11Сибирские Сети Новосибирск 2E+12 300 300 300 300 300 300 300 300 300 300 300Сибирские Сети Новосибирск 2E+12 45039 8194 3175 635 635Сибирские Сети Новосибирск 2E+12 300 300 300 300 300 300 300 300 300 300 300
...
Рейтинг: 0 / 0
Сводная таблица
    #39653971
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tip78,

запрос:

SELECT to_char(cc.date, 'YYYY-MM'), ca.company, sum(cc.total_with_vat), cc.account, cc.service
FROM cc
left join ca
on cc.account = ca.account
where cc.account like '200%' and cc.service ='IP' and ca.company like '%Новосибирск%'
group by to_char(cc.date, 'YYYY-MM'), cc.account, cc.service, ca.company


Что выгружает:
to_char base_company sum account_number service2016-01 Новосибирск 300 2E+12 IP2016-01 Новосибирск 300 2E+12 IP2016-01 Новосибирск 635 2E+12 IP

Что нужно:

base_company account_number 2016-01 2016-02 2016-03 2016-04 2016-05 2016-06 2016-07 2016-08 2016-09 2016-10 2016-11Новосибирск 2E+12 300 300 300 300 300 300 300 300 300 300 300Новосибирск 2E+12 45039 8194 3175 635 635 Новосибирск 2E+12 300 300 300 300 300 300 300 300 300 300 300
...
Рейтинг: 0 / 0
Сводная таблица
    #39654028
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
o.makarov982183,

поясните, если не сложно, я выгружаю через pg_admin в csv, потом когда открываю файл через эксель, он пишет, что данные обрезаны из-за того, что строк не хватает

Вообще конечно хочу научиться в формате сводной делать, но пока такой вариант тоже подойдёт

Какая версия екселя?

Сколько строк в оькрываемом буфере?
...
Рейтинг: 0 / 0
Сводная таблица
    #39654119
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
o.makarov, таблицы исходные
непонятно же нихрена, что за "cc.account like '200%'", а в результатах его НЕТ
почему в таблице и в запросе разные поля,
и почему такой GROUP BY, можно же было по ca.account группировать
...
Рейтинг: 0 / 0
Сводная таблица
    #39654624
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tip78,

ну смотрите - есть список данных: дата, номер, сумма, регион

Эти данные хранятся в базе в таком формате, что на одну дату (и уж тем более на один месяц) приходится несколько сумм по номерам.
Мне нужно, чтобы на один месяц был один номер с общей суммой, поэтому я делаю сумм и группирую по дате, иначе выгрузиться намного больший массив по строкам.

Но поскольку этих номеров очень много, даже при учёте группировке, в идеале нужно, чтобы дата была в столбцах (аналогично сводной таблице), а поскольку я sql только вот начал изучать самостоятельно, я очень многого не знаю. В скриптах, которые я находил в интернете, попросту не могу разобраться, не хватает мне пока ещё знаний и тонкостей синтаксиса.

Во вложении скрин запроса и таблицы (на like можете не обращать внимание, это вывод номеров, которые мне нужны, этот оператор особой роли не играет)
...
Рейтинг: 0 / 0
Сводная таблица
    #39654625
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

Эксель 2016, в итоговом csv файле где-то 5-6 млн строк
...
Рейтинг: 0 / 0
Сводная таблица
    #39654626
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tip78,

Если группировать по аккаунтам, то будет один аккаунт - одна сумма в общем за все периоды, а мне нужна один аккаунт - одна сумма на каждый месяц (то есть сумма за январь, февраль, март и т.д. по каждому аккаунту)
...
Рейтинг: 0 / 0
Сводная таблица
    #39654627
angel_zar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сводную таблицу, лучше делать в клиентской части, возможно в том же экселе или еще чем.
...
Рейтинг: 0 / 0
Сводная таблица
    #39654628
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
o.makarov в итоговом csv файле где-то 5-6 млн строк
Теперь понятно.
Может легче будет сменить инструмент?
EXCEL явно не то, на чем обрабатываются такие объемы.
...
Рейтинг: 0 / 0
Сводная таблица
    #39654629
angel_zar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183o.makarov в итоговом csv файле где-то 5-6 млн строк
Теперь понятно.
Может легче будет сменить инструмент?
EXCEL явно не то, на чем обрабатываются такие объемы.
Если к Excel, прицепить этот CSV в качестве источника данных, то при построении сводной таблицы, он будет использовать все данные (если результирующих строк будет больше 1М+, то он результат обрежет, но вроде предупреждение выдаст, что не может все отобразить), не скажу что это ему легко дастся, но работать с ними, он вполне в состоянии.
...
Рейтинг: 0 / 0
Сводная таблица
    #39654630
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
o.makarovtip78,

Если группировать по аккаунтам, то будет один аккаунт - одна сумма в общем за все периоды, а мне нужна один аккаунт - одна сумма на каждый месяц (то есть сумма за январь, февраль, март и т.д. по каждому аккаунту)

Группировать тебе надо по акаунту, а периоды вывести или через PIVOT или через CASE

Примерно так:

SELECT CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-1" THEN sum(cc.total_with_vat) END as 2018-1,
CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-2" THEN sum(cc.total_with_vat) END as 2018-2,
,,,
CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-12" THEN sum(cc.total_with_vat) END as 2018-12,

синтаксис на PostgreSQL точно на подскажу
...
Рейтинг: 0 / 0
Сводная таблица
    #39654631
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
angel_zar,

Насчёт экселя, конечно проще, но мне в принципе и самому интересно, как можно строить сводные в самом SQLе

По поводу прицепить csv файл в качестве источника - интересный вариант, строк будет меньше миллиона, не знал, что так можно. Спасибо, попробую)
...
Рейтинг: 0 / 0
Сводная таблица
    #39654632
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
angel_zarЕсли к Excel, прицепить этот CSV в качестве источника данных, то при построении сводной таблицы, он будет использовать все данные
Не знал. Надо попробовать.
Но явно ему такие извращения не нужны.
Идея переписать запрос правильная.
Направление с PIVOT либо CASE Анна ему подсказала.
Осталось немного напрячься и сделать.
...
Рейтинг: 0 / 0
Сводная таблица
    #39654633
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

Не понимаю пока что - что это и что будет в результате, но спасибо, я попробую сейчас с этим разобраться)

От экселя никуда не уйти, да и куда уйти, я кроме экселя и гугл таблиц похожих интерфейсов не встречал, а конечные пользователи, для которых формируется отчёт - работают в экселе
...
Рейтинг: 0 / 0
Сводная таблица
    #39654634
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183SELECT CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-1" THEN sum(cc.total_with_vat) END as 2018-1,
CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-2" THEN sum(cc.total_with_vat) END as 2018-2,
,,,
CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-12" THEN sum(cc.total_with_vat) END as 2018-12,

вру
Примерно так:

SELECT sum(CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-1" THEN cc.total_with_vat END) as "2018-1",
sum(CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-2" THEN cc.total_with_vat END) as "2018-2",
,,,
sum(CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-12" THEN cc.total_with_vat END) as "2018-12",
...
Рейтинг: 0 / 0
Сводная таблица
    #39654635
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

Подскажите, пожалуйста, а после того, как все CASE заданы, далее я просто дописываю в SELECT то что мне нужно?
...
Рейтинг: 0 / 0
Сводная таблица
    #39654639
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, убираешь из группировки to_char(cc.date, 'YYYY-MM') и вставляешь в SELECT то же самое через CASE
...
Рейтинг: 0 / 0
Сводная таблица
    #39654650
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

таким образом должно выглядеть? Оставшиеся колонки (сервис, компания и номер) просто дописываются или тоже через CASE?
...
Рейтинг: 0 / 0
Сводная таблица
    #39654651
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Не прилагай фото, приложи текст.
2. Запятая у меня лишняя после 'YYYY-MM')
...
Рейтинг: 0 / 0
Сводная таблица
    #39654652
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3. SUM не там. я ранее исправился.
...
Рейтинг: 0 / 0
Сводная таблица
    #39654653
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

SELECT
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-1" THEN churn_charges.total_with_vat END) as 2016-1,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-2" THEN churn_chargestotal_with_vat END) as 2016-2,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-3" THEN churn_charges.total_with_vat END) as 2016-3,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-4" THEN churn_charges.total_with_vat END) as 2016-4,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-5" THEN churn_charges.total_with_vat END) as 2016-5,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-6" THEN churn_charges.total_with_vat END) as 2016-6,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-7" THEN churn_charges.total_with_vat END) as 2016-7,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-8" THEN churn_charges.total_with_vat END) as 2016-8,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-9" THEN churn_charges.total_with_vat END) as 2016-9,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-10" THEN churn_charges.total_with_vat END) as 2016-10,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-11" THEN churn_charges.total_with_vat END) as 2016-11,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-12" THEN churn_charges.total_with_vat END) as 2016-12,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-1" THEN churn_charges.total_with_vat END) as 2017-1,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-2" THEN churn_charges.total_with_vat END) as 2017-2,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-3" THEN churn_charges.total_with_vat END) as 2017-3,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-4" THEN churn_charges.total_with_vat END) as 2017-4,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-5" THEN churn_charges.total_with_vat END) as 2017-5,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-6" THEN churn_charges.total_with_vat END) as 2017-6,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-7" THEN churn_charges.total_with_vat END) as 2017-7,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-8" THEN churn_charges.total_with_vat END) as 2017-8,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-9" THEN churn_charges.total_with_vat END) as 2017-9,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-10" THEN churn_charges.total_with_vat END) as 2017-10,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-11" THEN churn_charges.total_with_vat END) as 2017-11,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-12" THEN churn_charges.total_with_vat END) as 2017-12,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2018-1" THEN churn_charges.total_with_vat END) as 2018-1,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2018-2" THEN churn_charges.total_with_vat END) as 2018-2,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2018-3" THEN churn_charges.total_with_vat END) as 2018-3,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2018-4" THEN churn_charges.total_with_vat END) as 2018-4,
churn_charges.account_number, churn_accounts.base_company, churn_charges.service
FROM public.churn_charges
left join churn_accounts
on churn_charges.account_number = churn_accounts.account_number
where churn_charges.account_number like '200%' and churn_charges.service ='IP' and churn_accounts.base_company like '%Новосибирск%'
group by churn_charges.account_number, churn_charges.service, churn_accounts.base_company;
...
Рейтинг: 0 / 0
Сводная таблица
    #39654654
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4. Попробуй на одном месяце.
...
Рейтинг: 0 / 0
Сводная таблица
    #39654657
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
SELECT sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM') ="2016-10" THEN churn_charges.total_with_vat END) as 2016-10,
	churn_charges.account_number, churn_accounts.base_company, churn_charges.service
FROM public.churn_charges left join churn_accounts
	on churn_charges.account_number = churn_accounts.account_number
	where churn_charges.account_number like '200%' and churn_charges.service ='IP' and churn_accounts.base_company like '%Новосибирск%'
group by churn_charges.account_number, churn_charges.service, churn_accounts.base_company; 
...
Рейтинг: 0 / 0
Сводная таблица
    #39654658
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

Вот так должно выглядеть?) И вопрос ещё, в таком случае дата вообще в группировке не участвует?

SELECT
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM') = "2016-1" THEN churn_charges.total_with_vat END) as 2016-1,
churn_charges.account_number, churn_accounts.base_company, churn_charges.service
FROM public.churn_charges
left join churn_accounts
on churn_charges.account_number = churn_accounts.account_number
where churn_charges.account_number like '200%' and churn_charges.service ='IP' and churn_accounts.base_company like '%Новосибирск%'
and to_char(churn_charges.charge_date, 'YYYY-MM') between '2016-01-01' and '2016-01-31'
group by churn_charges.account_number, churn_charges.service, churn_accounts.base_company;
...
Рейтинг: 0 / 0
Сводная таблица
    #39654660
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты просил "где даты будут в столбцах"
Соответственно дат в группировке нет
...
Рейтинг: 0 / 0
Сводная таблица
    #39654661
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

Попробовал, не работает пока, к сожалению. Ладно, посижу потыкаю код, что-нибудь да получится

Спасибо огромное вам, что уделили время и за помощь. Если получится, отпишу сюда, как оно должно всё же выглядеть)
...
Рейтинг: 0 / 0
Сводная таблица
    #39654663
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может не 2016-1, а 2016-02 ?

Какую ошибку пишет?
Я в синтаксисе PostgreSQL не силен.
...
Рейтинг: 0 / 0
Сводная таблица
    #39654667
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

а pg никаких ошибок не выдаёт, просто пустое поле, где должны быть итоговые данные запроса
...
Рейтинг: 0 / 0
Сводная таблица
    #39654673
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй 2016-10
Убери период из фильтра
...
Рейтинг: 0 / 0
Сводная таблица
    #39654682
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ двойные кавычки убери
...
Рейтинг: 0 / 0
Сводная таблица
    #39654685
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

Пробовал и с фильтром и без, кавычки тоже убирал, пока тишина)
...
Рейтинг: 0 / 0
Сводная таблица
    #39654687
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так заработало:

http://www.sqlfiddle.com/#!17/fd14d/1

Код: sql
1.
2.
3.
4.
5.
6.
SELECT id,
sum(CASE WHEN to_char(T.dat, 'YYYY-MM') = '2018-01' THEN T.summa END) as p201801,
sum(CASE WHEN to_char(T.dat, 'YYYY-MM') = '2018-02' THEN T.summa END) as p201802,
sum(CASE WHEN to_char(T.dat, 'YYYY-MM') = '2018-03' THEN T.summa END) as p201803
FROM T
group by ID; 



Убери минус из имени поля, и начни его с буквы
...
Рейтинг: 0 / 0
Сводная таблица
    #39654694
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

Про минус что-то не понял

SELECT churn_charges.account_number,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM') = '2016-10' THEN churn_charges.total_with_vat END) as 2016-10,
sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM') = '2016-11' THEN churn_charges.total_with_vat END) as 2016-11
FROM public.churn_charges
group by churn_charges.account_number;

Так всё равно не пашет, может в с датой что-то не так
...
Рейтинг: 0 / 0
Сводная таблица
    #39654704
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

ну и у меня стоит 10 версия, а не 9.6, хотя по идее вряд ли они синтаксисом могут отличаться
...
Рейтинг: 0 / 0
Сводная таблица
    #39654705
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
o.makarov,
Не as 2018-01
A as p201801
...
Рейтинг: 0 / 0
Сводная таблица
    #39654756
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

действительно, после этого запустился, сейчас запрос по всей истории запустить. Спасибо вам большое, что потратили столько времени и решили мою проблему, без вас бы я долго разбирался. Добра вам и позитива!)
...
Рейтинг: 0 / 0
Сводная таблица
    #39654757
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как текучку сделаешь, пробуй переписать всё на PIVOT.
...
Рейтинг: 0 / 0
Сводная таблица
    #39654760
o.makarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,

хорошо, обязательно перепишу, пока что там просто много всего непонятного, когда читал первый раз об этом, со временем разберусь, мне это интересно
...
Рейтинг: 0 / 0
Сводная таблица
    #39656061
angel_zar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз напишу, с изменением количества месяцев, это на PG получится динамический PIVOT. Это лучше делать на клиенте, например в SSRS есть такой компонент, Matrix и не надо ни чего городить в запросе, запрос возвращает нужную информацию, а как ее отобразить (развернуть) это уже проблема клиентской части.
...
Рейтинг: 0 / 0
Сводная таблица
    #39656068
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть скорость получатся приемлемая, то почему бы и нет.
Если тормозить будет, что лучше в SSRS передавать уже собранные/свернутые/агрегированные данные.
...
Рейтинг: 0 / 0
Сводная таблица
    #39656070
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другое дело, а есть необходимость пересчитывать старые месяца, или достаточно пересчитать текущий и предпоследний?
Данные задним числом правят?
...
Рейтинг: 0 / 0
Сводная таблица
    #39656194
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
o.makarov,

psql версии 10+ может делать пивотирование через `\crosstabview` команду:
https://www.postgresql.org/docs/current/static/app-psql.html
https://wiki.postgresql.org/wiki/Crosstabview
...
Рейтинг: 0 / 0
48 сообщений из 48, показаны все 2 страниц
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сводная таблица
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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