2016-09-24 3 views
0

У меня есть таблица, как показано ниже:Postgresql в создании кросс результаты

| Email | Category | Amount | Post_date |  
| [email protected] | ATM  | 20  | 2016-09-20 | 
| [email protected] | POS  | 30  | 2016-09-21 | 
| [email protected] | FOOD  | 40  | 2016-09-22 | 
| [email protected] | ENTE  | 50  | 2016-09-23 | 

I Want выход выглядеть следующим образом:

| Email | Category | Last 1 day| Last 3 days | last 5 days | 
| [email protected] | ATM amount | 20  | 40  |  50  | 
|   | POS amount | 0   | 30  |  40  | 
|   | ATM count | 2   | 3   |  3  | 
|   | POS count | 0   | 0   |  3  | 

Я могу написать запрос, чтобы сгенерировать один столбец сразу, например в последние дни 1, последние 3 дня и т.д.

Мои вопросы:

  1. Я не знаю, как поместить результаты (последние 1 день, последние 3 дня и т. Д.) Вместе?
  2. И я не знаю, как я могу повернуть столбец (ATM Count) в строки.
+0

Какова связь между данными вашего образца и вашими результатами? Это не имеет никакого смысла. –

+0

Привет, Гордон, банкомат - это доллар, потраченный лицом (идентифицированным по электронной почте) в течение последних 1,3,5 и т. Д. дней. Счет означает, сколько раз человек использует карту на ATM/POS в течение последних 1,3,5 и т. Д. Дней – Ninjia123

ответ

0

Я сильно подозреваю, что вы хотите запрос, как это:

select email, category, 
     sum(case when post_date >= current_date - interval '1 day' then 1 else 0 end) as last_1, 
     sum(case when post_date >= current_date - interval '3 day' then 1 else 0 end) as last_3, 
     sum(case when post_date >= current_date - interval '5 day' then 1 else 0 end) as last_5 
from t 
group by email, category; 

Я признаю, что это предположение, потому что вопрос не ясен.

+0

Привет, спасибо за ваш ответ. Однако результат не следует группировать по «категории», потому что категория на выходе отличается от категории в исходной таблице. Сумма банкомата (таблица вывода) = сумма (сумма), где category = ATM в исходной таблице. и результаты должны отображать как сумму, так и сумму (количество) банкомата в качестве количества банкоматов, как показано в вашем запросе. Еще раз спасибо за вашу помощь! – Ninjia123