|
Сводная таблица
|
|||
---|---|---|---|
#18+
3. SUM не там. я ранее исправился. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:30 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
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; ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:32 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
4. Попробуй на одном месяце. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:32 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:35 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
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; ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:38 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Ты просил "где даты будут в столбцах" Соответственно дат в группировке нет ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:42 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, Попробовал, не работает пока, к сожалению. Ладно, посижу потыкаю код, что-нибудь да получится Спасибо огромное вам, что уделили время и за помощь. Если получится, отпишу сюда, как оно должно всё же выглядеть) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:43 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Может не 2016-1, а 2016-02 ? Какую ошибку пишет? Я в синтаксисе PostgreSQL не силен. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:47 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, а pg никаких ошибок не выдаёт, просто пустое поле, где должны быть итоговые данные запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:53 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Попробуй 2016-10 Убери период из фильтра ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:59 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
+ двойные кавычки убери ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 09:06 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, Пробовал и с фильтром и без, кавычки тоже убирал, пока тишина) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 09:09 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Вот так заработало: http://www.sqlfiddle.com/#!17/fd14d/1 Код: sql 1. 2. 3. 4. 5. 6.
Убери минус из имени поля, и начни его с буквы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 09:11 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
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; Так всё равно не пашет, может в с датой что-то не так ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 09:26 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, ну и у меня стоит 10 версия, а не 9.6, хотя по идее вряд ли они синтаксисом могут отличаться ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 09:48 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
o.makarov, Не as 2018-01 A as p201801 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 10:00 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, действительно, после этого запустился, сейчас запрос по всей истории запустить. Спасибо вам большое, что потратили столько времени и решили мою проблему, без вас бы я долго разбирался. Добра вам и позитива!) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 11:32 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Как текучку сделаешь, пробуй переписать всё на PIVOT. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 11:35 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, хорошо, обязательно перепишу, пока что там просто много всего непонятного, когда читал первый раз об этом, со временем разберусь, мне это интересно ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 11:39 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Еще раз напишу, с изменением количества месяцев, это на PG получится динамический PIVOT. Это лучше делать на клиенте, например в SSRS есть такой компонент, Matrix и не надо ни чего городить в запросе, запрос возвращает нужную информацию, а как ее отобразить (развернуть) это уже проблема клиентской части. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 07:03 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Есть скорость получатся приемлемая, то почему бы и нет. Если тормозить будет, что лучше в SSRS передавать уже собранные/свернутые/агрегированные данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 07:40 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Другое дело, а есть необходимость пересчитывать старые месяца, или достаточно пересчитать текущий и предпоследний? Данные задним числом правят? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 07:48 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
o.makarov, psql версии 10+ может делать пивотирование через `\crosstabview` команду: https://www.postgresql.org/docs/current/static/app-psql.html https://wiki.postgresql.org/wiki/Crosstabview ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 10:58 |
|
|
start [/forum/topic.php?fid=53&msg=39654682&tid=1995741]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 279ms |
total: | 416ms |
0 / 0 |