-1

我有以下结果集:

    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,应该插入第一条记录和第二条记录。

编辑:在这种情况下,运行总计是需要注意的,因此例如(以上示例已更新)在上述情况下,临时表应插入第一条和第二条记录并停止,因为已达到 500 的阈值。

4

2 回答 2

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
于 2012-10-04T15:07:59.283 回答
0

看来您只是想过滤结果集。

SELECT * FROM t1 
GROUP BY SendDate
HAVING SUM(NumberOfSends) >= 500
于 2012-10-04T15:08:28.640 回答