Я пишу представление базы данных, чтобы суммировать кучу записей, где значение в столбце даты находится в течение последних 7 дней. Это выглядит примерно так:
CREATE VIEW RecentRecordSum AS
SELECT t.ID,
SUM(t.SomeValue) AS ValueSum
FROM SomeTable t
WHERE t.RecordDate >= DATEADD(d,-7,GETDATE())
GROUP BY t.ID
Есть ли способ сделать это, не используя GETDATE () непосредственно в предложении where?
Я использую SQL Server 2000 и 2005.
Изучение плана запроса показывает, что стоимость вызова getdate () составляет всего 0,03% от всего запроса (что значительно сложнее, чем выше), поэтому производительность не является проблемой, однако мне нравятся мои запросы быть детерминированным.
В идеале я бы также хотел представить параметр -7 в виде столбца, чтобы его можно было использовать в предложении where чего-то, запрашивающего представление. В настоящее время я рассматриваю небольшое количество просмотров для окон 7, 14, 28 дней.