T-SQL从记录集计算阈值

时间:2012-10-04 15:05:32

标签: sql sql-server tsql threshold

我有以下结果集:

    ContentSendId ContentId   NewsletterId Position    IsConditionMatch SendDate                NumberOfSends IsSendValid
    ------------- ----------- ------------ ----------- ---------------- ----------------------- ------------- -----------
    1             100001      51           1           0                2011-05-14 00:00:00.000 200           0
    2             100001      51           1           0                2011-05-13 00:00:00.000 300           0
    3             100001      51           1           0                2011-05-14 00:00:00.000 100           0
    4             100001      51           1           0                2011-05-13 00:00:00.000 200           0

我需要在T-SQL中运行一个计算,如果给定一个阈值,应该插入一个记录(进入临时表),并且应该忽略阈值之外的任何值

因此,在此示例中,假设阈值为500,应插入第一条记录和第二条记录。

编辑: 在这种情况下,运行总计是要处理的事情,因此例如(上面的示例更新)在上面的场景中,临时表应插入第1和第2条记录并停止,因为已达到500的阈值。

2 个答案:

答案 0 :(得分:1)

select t1.ContentSendId, t1.ContentId, t1.NewsletterId, t1.Position, t1.IsConditionMatch, t1.SendDate, t1.NumberOfSends, t1.IsSendValid 
into #t
from yourtable t1
    inner join yourtable t2 on t1.ContentSendId>=t2.ContentSendId
group by t1.ContentSendId, t1.ContentId, t1.NewsletterId, t1.Position, t1.IsConditionMatch, t1.SendDate, t1.NumberOfSends, t1.IsSendValid 
having SUM(t2.NumberOfSends) < @threshold

答案 1 :(得分:0)

您似乎只是想过滤结果集。

SELECT * FROM t1 
GROUP BY SendDate
HAVING SUM(NumberOfSends) >= 500