У меня есть огромная таблица заказов клиентов, и я хочу запустить один запрос, чтобы просмотреть список заказов по месяцам за последние 13 месяцев по «user_id». То, что у меня есть сейчас (ниже), работает, но вместо того, чтобы перечислять только одну строку для каждого user_id, он перечисляет одну строку для каждого заказа, который имеет user_id. Пример: один пользователь имеет 42 общих заказа за всю свою жизнь с нами, поэтому он перечисляет его user_id в 42 строках, и в каждой строке есть только один платеж. Обычно я просто добавляю это в сводную таблицу в Excel, но я превышаю ограничение в миллион строк, поэтому мне нужно, чтобы оно было правильным и не имело нулевого успеха. Я хотел бы, чтобы чтение выглядело так:
идентификатор_пользователя | июль_12 | авг_12 |
123456 | 150.00 | 150.00 |
Не этот:
идентификатор_пользователя | июль_12 | авг_12 |
123456 | 0.00 | 150.00 |
123456 | 150.00 | 0.00 |
пр. еще 40 рядов
SELECT ui.user_id,
SUM(CASE WHEN date_part('year', o.time_stamp) = 2012 AND date_part('month', o.time_stamp) = 07 THEN o.amount ELSE 0 END) jul_12,
SUM(CASE WHEN date_part('year', o.time_stamp) = 2012 AND date_part('month', o.time_stamp) = 08 THEN o.amount ELSE 0 END) aug_12,
FROM orders o JOIN users_info ui ON ui.user_id = o.user_id
WHERE user_id = '123456'
GROUP BY ui.user_id, o.time_stamp;