特定のレポートの毎日の実行を格納するテーブルがあります。
DateAdded NodeId Field1Value Field1Threshold etc
NodeIdがレポートに存在していた日数をリストする新しい要件があります。したがって、DateAddedが次のようにリストされている場合
2013-03-01 <-- Run date
2013-02-28
2013-02-27
2013-02-26 <-- End of date sequence. Return 4 days
2013-02-13
2013-01-07
これは、日付シーケンスの区切りを識別することでもあります
編集10:54私の時間これは私のspからの最初の提案のwhere句です
t.etc,
t.blah,
CASE WHEN ras1.NodeId IS NULL THEN 'N' ELSE 'Y' END as AlertStat,
fl.NodeId as fl_NodeId,
DATEDIFF(day, fl.LastDate, fl.FirstDate) as [DaysOn]
FROM vwTrips t left join
(
select distinct nodeId
from CustLogs.dbo.ReportAlertStats ras
where ras.DateAdded between @RasStart and @RasEnd
) ras1 on t.NodeId = ras1.NodeId left join
( SELECT NodeId,
MIN(DateAdded) [FirstDate],
MAX(DateAdded) [LastDate]
FROM CustLogs.dbo.ReportAlertStats
GROUP BY NodeId
--ORDER BY NodeId, DateAdded
) fl on t.NodeId = fl.NodeId
WHERE t.TripStart between @ReportStart and @ReportEnd