Sql server 如何使GETDATE动态化,以便报告在任何日期运行时都应显示指定日期的信息

Sql server 如何使GETDATE动态化,以便报告在任何日期运行时都应显示指定日期的信息,sql-server,Sql Server,我需要编写一个SQL查询,使GETDATE成为动态的,这样,如果报表在任何日期运行,它都应该显示指定日期的信息 CASE WHEN PERIOD_TYPE='DAY' THEN (SELECT SUM(SALES_BUDGET) as SALES_BUDGET_DAY FROM ( SELECT SUM(SALES_BUDGET) AS SALES_BUDGET FROM ANALYSE.SGFOM_TX_BUDGET WHERE CALENDAR_DAY='2020-11-29'--C

我需要编写一个SQL查询,使GETDATE成为动态的,这样,如果报表在任何日期运行,它都应该显示指定日期的信息

CASE WHEN PERIOD_TYPE='DAY' THEN 

(SELECT SUM(SALES_BUDGET) as SALES_BUDGET_DAY FROM 
(
SELECT SUM(SALES_BUDGET)  AS SALES_BUDGET
FROM ANALYSE.SGFOM_TX_BUDGET
WHERE CALENDAR_DAY='2020-11-29'--CAST(GETDATE()-1 AS DATE)
UNION ALL
SELECT SUM(SALES_BUDGET)  AS SALES_BUDGET
FROM ANALYSE.MYFOM_TX_BUDGET
WHERE CALENDAR_DAY='2020-11-29'--CAST(GETDATE()-1 AS DATE)
UNION ALL
SELECT SUM(SALES_BUDGET)  AS SALES_BUDGET
FROM ANALYSE.ID_TX_SAPBI_BUDGET
WHERE CALENDAR_DAY='2020-11-29'--CAST(GETDATE()-1 AS DATE)
--JOIN  SITE AND GROUP BY CATGEORYY ETC
) A )

您可以将其声明为变量:

DECLARE @date DATE=DATEADD(DAY,-1,CAST(GETDATE() AS DATE));

CASE WHEN PERIOD_TYPE='DAY' THEN 

(SELECT SUM(SALES_BUDGET) as SALES_BUDGET_DAY FROM 
(
SELECT SUM(SALES_BUDGET)  AS SALES_BUDGET
FROM ANALYSE.SGFOM_TX_BUDGET
WHERE CALENDAR_DAY=@date--CAST(GETDATE()-1 AS DATE)
UNION ALL
SELECT SUM(SALES_BUDGET)  AS SALES_BUDGET
FROM ANALYSE.MYFOM_TX_BUDGET
WHERE CALENDAR_DAY=@date--CAST(GETDATE()-1 AS DATE)
UNION ALL
SELECT SUM(SALES_BUDGET)  AS SALES_BUDGET
FROM ANALYSE.ID_TX_SAPBI_BUDGET
WHERE CALENDAR_DAY=@date--CAST(GETDATE()-1 AS DATE)
--JOIN  SITE AND GROUP BY CATGEORYY ETC
) A )

另外:我强烈建议不要使用
GETDATE()-1
——这还不完全清楚。相反-使用
DATEADD
函数:
DATEADD(DAY;-1,GETDATE())
更清晰-您希望从当前日期中减去1天。@marc_s+1,并且使用
SYSDATETIME()