我有一個表的數據是這樣的:列值的SQL集團通過一筆不固定值
CommonURN GiftAidAmount GA_Status
14013084 2.00 45
14637494 20.00 45
14637496 1.00 45
14637508 5.00 45
14637520 10.00 45
14637525 19.00 45
14637562 10.00 45
14637586 12.00 45
14637590 3.00 45
14637649 5.00 45
我想組我行成共計£1000或更低,其中GA_Status值等於45塊。
我到目前爲止是這樣的:
CREATE TABLE #Temp
(CommonURN int,
GiftAidAmount money,
RunningSum money,
GroupID int);
WITH cte
(commonURN,giftAidAmount,running_sum)
AS
(SELECT
c.commonURN,
c.giftAidAmount,
(select sum(c2.giftAidAmount)
from dbo.[Campaign_Data] as c2
where
GA_Status = 45 and
c2.commonURN <= c.commonURN)
FROM
[dbo].[Campaign_Data] c
WHERE GA_Status = 45)
INSERT INTO #Temp (CommonURN,GiftAidAmount,RunningSum,GroupID)
SELECT
commonURN,
giftAidAmount,
running_sum,
ceiling(running_sum/1000) as GroupID
FROM
cte
ORDER BY
commonURN
SELECT
GroupID,
COUNT(*) NumRows,
SUM(GiftAidAmount) TotalGiftAid
FROM
#Temp
GROUP BY GroupID
這工作得很好,除了在結果集中的羣體,一個是超過£1000:
GroupID NumRows TotalGiftAid
1 100 999.83
2 107 999.57
3 91 990.82
4 114 1009.34
5 114 995.40
6 58 455.65
我不明白這是爲什麼。任何人都可以解釋並幫助我解決它嗎?或者建議更好的方法altogther?
也許我錯過了一些東西,但是您的示例數據不會累加到接近1,000的任何東西上;) – gvee
不,總共有584行,我認爲這不是一個好主意商場。是否有一個設施可以共享更大量的樣本數據? – cjashwell
這是我的一些數學方面的失敗,以最高限額(running_sum/1000)作爲GroupID部分。我想也許我需要除以1001或其他東西。 – cjashwell