-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であるとすると、最初のレコードと2番目のレコードが挿入されます。

編集:このシナリオでは現在の合計を処理する必要があるため、たとえば(上記の例を更新)上記のシナリオでは、一時テーブルは1番目と2番目のレコードを挿入し、しきい値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 に答える