在存储过程中重新排列日期过滤器

时间:2019-05-13 10:47:32

标签: sql sql-server logic

我有一个存储过程,在该过程中,我根据提供的date列选择几列。结果应基于当前财政年度 从1月5日开始。

但是我如何创建用于自我更新日期过滤器的逻辑,该逻辑将设置为 自动开始财政年度,而无需每年更新存储过程?

SELECT
    SUM([RetailPrice]) AS Retail,
    SUM([CostPrice]) AS Cost,
    SUM([MarketPrice]) AS Market
FROM 
    PriceDetail
WHERE
    [UserID] = '0029'
    AND [Date] >= CONVERT(DATETIME, '2019-01-05')

1 个答案:

答案 0 :(得分:3)

如果您从未在一年的前五天跑步:

select SUM([RetailPrice]) AS Retail,
       SUM([CostPrice]) AS Cost,
       SUM([MarketPrice]) AS Market
from PriceDetail
where [UserID] = 0029 and
      [Date] >= datefromparts(year(getdate()), 01, 05);

如果您需要它在一年的前六天工作:

where [UserID] = 0029 and
      [Date] >= datefromparts(year(dateadd(day, -5, getdate())), 01, 05);