我正在尝试在SSRS中生成一份报告,该报告向我展示了一个财政年度内每个季度的一些工作。我有每个公司FY存储在数据库中的日期/月份,我使用查询来查找当前或以前的FY开始/结束日期。
DECLARE @FirstDate DATETIME
DECLARE @LastDate DATETIME
DECLARE @CurrentDate DATETIME
DECLARE @CompanyID BIGINT
SET @CurrentDate = GETDATE()
SET @CompanyID = 631
SELECT @FirstDate = CASE WHEN DATEFROMPARTS(Year(@CurrentDate), Month(c.FinancialYearStart), Day(c.FinancialYearStart)) <= GETDATE() THEN
-- We are in the right Year
DATEFROMPARTS(Year(@CurrentDate), Month(c.FinancialYearStart), Day(c.FinancialYearStart))
ELSE
-- we need to go back a year
DATEFROMPARTS(Year(@CurrentDate)-1, Month(c.FinancialYearStart), Day(c.FinancialYearStart))
END
, @LastDate = CASE WHEN DATEFROMPARTS(Year(@CurrentDate), Month(c.FinancialYearStart), Day(c.FinancialYearStart)) <= GETDATE() THEN
-- We are in the right Year
DATEADD(day, -1, DATEADD(year, 1, DATEFROMPARTS(Year(@CurrentDate), Month(c.FinancialYearStart), Day(c.FinancialYearStart))))
ELSE
-- we need to go back a year
DATEADD(day, -1, DATEADD(year, 1, DATEFROMPARTS(Year(@CurrentDate)-1, Month(c.FinancialYearStart), Day(c.FinancialYearStart))))
END
FROM tCompany c
WHERE c.ID = @CompanyID
如何从@FirstDate查询每个季度的FY?
E.g。如果公司FY是01/04 - 31/03我怎样才能确定每个季度?
第1季度 - 4月,5月,6月 第2季度 - 7月,8月,9月 第3季度 - 10月,11月,12月 第4季度 - 1月,2月,3月
答案 0 :(得分:0)
通常会将财务季度专门定义为日历表中的字段,因为它们通常不会按预期运行 - 例如4-4-5或4-5-4会计。
如果您只是查看日历月,可以使用CASE WHEN表达式和MONTH()函数。您需要弄清楚该特定会计年度的“起始”月份,然后使用该月份将MONTH()转换为1 - 12财政月份,然后将(1,3,3)中的fisalMonth转换为CASE WHEN。 ..等等。
实际上 - 使用日历表。请参阅Aaron Bertrand的文章: https://www.mssqltips.com/sqlservertip/4054/creating-a-date-dimension-or-calendar-table-in-sql-server/
答案 1 :(得分:0)
第1步:创建@FirstDate
变量
DECLARE @FirstDate DATETIME = '05/31/2015'
步骤2:创建SQL以查找每个季度
SELECT
DATEPART(MONTH,@FirstDate) AS [Q1 Start],
DATEPART(MONTH, DATEADD(MONTH, 3, @FirstDate)) AS [Q2 Start],
DATEPART(MONTH, DATEADD(MONTH, 6, @FirstDate)) AS [Q3 Start],
DATEPART(MONTH, DATEADD(MONTH, 9, @FirstDate)) AS [Q4 Start]
输出:
=====================================
|Q1 Start|Q2 Start|Q3 Start|Q4 Start|
=====================================
|5 |8 |11 |2 |
=====================================