2014-05-05 51 views
0

考慮以下查詢,該查詢會生成customerid以及他們購買特定產品的日期,顯然,每個客戶將有不同的日期購買商品。我想要做的是在顧客購買該產品的那些日子裏完成購買。如何彙總表格中的選定日期

我有ff查詢。

Select customerid, eventdate 
into #days 
from table1 
where product='chocolate' 

現在我要總結的只是那些日子裏,顧客買「巧克力」作出的所有購買。 所以我有

select customerid, sum(purchases) purchases 
into #pur 
from table1 a 
where eventdate in (select eventdate from #days where customerid=a.customerid) 
group by customerid 

但上面花的時間過長對,所以我取消了運行。 請協助更好的查詢。

回答

0

後仔細思考下面的工作對我而言,速度更快。

--drop表#days 選擇客戶ID,EVENTDATE 與(NOLOCK,指數(ix_eventdate))#days 從表1 WHERE 20140401和20140430 和產物= '巧克力'

之間EVENTDATE --drop表#pur 選擇客戶ID,EVENTDATE,購買
成#pur 從表1 與(NOLOCK,指數(ix_eventdate)) 其中20140401和20140430之間EVENTDATE

表--drop #first 選擇。*,b.purchases 成#first從#days一個 左加入#pur b 上a.customerid = b.customerid 和a.EventDate = B。EVENTDATE

--select *從#first

--drop表#purdays 選擇客戶ID,和(購買)收入到#purdays從#first 組由客戶ID 爲了通過客戶ID

選擇*從#purdays

0

這給出每個顧客購買巧克力的每一天的購買總額

select customerid, eventdate ,sum(purchases) purchases 
into #pur 
from table1 
where product='chocolate' 
group by customerid,eventdate 

如果您想在被帶到巧克力然後做到這一點

select customerid,sum(purchases) purchases 
into #pur 
from table1 
where product='chocolate' 
group by customerid 

根據您的澄清

select customerid, sum(purchases) purchases 
into #pur 
from table1 a 
where eventdate in (select eventdate from table1 where product='chocolate') 
group by customerid 

我建議你上EVENTDATE列,以提高查詢性能應用索引總購買。

+1

我想我不得不讓你知道表結構是如何。 table1具有以下結構,customerid,eventdate,product,purchases ... 1 20140101 chocoloate 10.00 1 20140203糖果15.00 a產品='巧克力'的條款將總結巧克力的購買金額,我想要的是獲取日期哪一位顧客​​只購買了巧克力,然後將所有購買包括巧克力在內的所有購買進行結算 –

+0

因此,您首先想要查找購買巧克力時的所有日期,然後將其歸類爲顧客並計算總和? –

+0

是的,在僅購買巧克力的日子計算包括巧克力在內的所有產品的購買總和。在我貼出答案 –

0

客戶購買的所有商品的總和,僅計算他購買巧克力的日期。

SELECT customerid, sum(purchases) purchases 
FROM table1 a 
WHERE eventdate IN 
    (SELECT eventdate 
    FROM table1 
    WHERE product = 'chocolate' 
    AND customerid = a.customerid) 
GROUP BY customerid; 
+0

我想我必須讓你知道的表結構是如何有幫助喜歡。 table1有以下結構,customerid,product,purchases ... 1 chocoloate 10.00 –

+0

我相信這個查詢是正確的。 – wvdz

+0

試試吧,我會盡快反饋,謝謝 –

0

不太確定這是否可行,但試用一下。如果它不那麼能否請您提供的樣本數據和預期的輸出,使我們可以嘗試一下以更好的方式

select customerid, sum(purchases) purchases 
into #pur 
from table1 a 
inner join #days d 
ON d.customerid = a.customerid 
AND d.eventdate = a.eventdate 
group by customerid 

或嘗試此查詢

select customerid, sum(purchases) purchases 
into #pur 
from table1 a 
inner join #days d 
ON d.customerid = a.customerid 
WHERE d.eventdate = a.eventdate 
group by customerid 

希望這有助於