我有以下结果集:
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的阈值。
答案 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