2015-04-06 2 views
0

У меня есть группа, выбранная этой группой клиентами за последние два месяца по идентификатору клиента и дате. Что мне нужно сделать, так это связать для каждой строки общую сумму, потраченную этим клиентом за всю первую неделю двухмесячного периода (конечно, это будет повторение для каждой строки одного клиента, но по какой-то причине это нормально). вы знаете, как это сделать, не используя sub-запрос в качестве столбца? Я думал использовать какую-то комбинацию OVER PARTITION, но не мог понять, как ... Большое спасибо. РаффаэлеSQL: агрегация (группа по типу) в столбце

Запрос:

select customer_id, date, sum(sales) 
from transaction_table 
group by customer_id, date 
+3

Можете ли вы показать нам запрос, который у вас есть до сих пор? – CindyH

+0

Привет, CindyH, спасибо за ваш ответ. Я поставил запрос в нижней части сообщения. Спасибо – lilloraffa

ответ

1

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

select distinct customer_id, date, sum(sales) over (partition by customer_ID, date) 
, sum(case when date between '1/1/15' and '1/7/15' then Sales end) 
    over (partition by customer_id) as FirstWeekSales 
from transaction_table 

В ответ на комментарии ниже; Я не уверен, что это то, что вы ищете, поскольку оно связано с подзапросом, но вот мой лучший снимок:

select distinct a.customer_id, date 
, sum(sales) over (partition by a.customer_ID, date) 
, sum(case when date between mindate and dateadd(DD, 7, mindate) 
    then Sales end) 
    over (partition by a.customer_id) as FirstWeekSales 
from transaction_table a 
left join 
(select customer_ID, min(date) as mindate 
    from transaction_table group by customer_ID) b 
on a.customer_ID = b.customer_ID 
+0

В противном случае вы могли бы рассчитать эти две даты и сохранить их как переменные, такие как declare @ Date1 date = (выберите min (date) from transaction_table) – APH

+0

Спасибо, араэль. Моя проблема в том, что мне нужна первая неделя с момента их первой покупки в рассматриваемый период ... – lilloraffa

+0

А, это имеет смысл - спасибо за разъяснение. Не уверен, как я сделал бы это без подзапроса или промежуточной таблицы, чтобы рассчитать соответствующие даты. – APH

Смежные вопросы