公司的财政年度:7月1日 - 6月30日
我有一个查询,我试图在截至的财政年度中按产品和成本中心捕获总计#单位和$收入。它将在本月1日运行并查看上个月的最后一天。财政年度未出现在报告中 - 这是标准。
Mix of pseudocode and SQL:
Where
If datepart(mm,getdate()) - 1 < 7
THEN
transaction_post_date BETWEEN 7/1/ previous year AND dateadd(day,-(day(getdate()),getdate())
Else
transaction_post_date BETWEEN 7/1/current year AND dateadd(day,-(day(getdate()),getdate())
我在写作轨道上吗?如何编写特定日期的SQL,该日期取决于SQL-7/1 /当年?
我使用变量很弱,甚至不知道我是否有权在SQL Server数据库上创建它们,而SQL Server数据库却被锁定了。绝对不能创建一个功能。 (我是商业分析师。)
更新,财政年度向前推进,因此2010年7月1日是2011财年。
我认为这有效:
Year(dateadd(month,6,htx.tx_post_date)) = Year(DateAdd(Month, 5, GetDate()))
留言反馈?
现在我被要求将数量和收入的年度至今年度字段添加到以下查询中,该查询为我提供了总计
Select
inv.ITEM_CODE
, inventory.ITEM_NAME
, cc.COST_CENTER_CODE
, tx.REV_CODE_ID
, tx.PRICE
, tx.ITEM_SALE_ID
, sum(tx.quantity)
, sum(tx.amount)
from
transactions tx
inner join inventory inv on inv.item_id = tx.item_id
left outer join cost_center cc on cc.cost_center_id = tx.cost_center_id
where
DATEPART(mm, tx.tx_date) = DATEPART(mm,dateadd(m,-1,getdate()))
and DATEPART(yyyy, tx.tx_date) = DATEPART(yyyy,dateadd(m,-1,getdate()))
group by
inv.ITEM_CODE
, inventory.ITEM_NAME
, cc.COST_CENTER_CODE
, tx.REV_CODE_ID
, tx.PRICE
, tx.ITEM_SALE_ID
我需要在此报告中添加会计年度最新数量和金额列。一个相关的子查询会顺便去吗?联接会变得棘手吗?我从未使用带有聚合/分组查询的子查询。
感谢您之前的所有帮助。
答案 0 :(得分:2)
如果我需要按财政年度分组,我会怎样做:
Group by Year(DateAdd(Month, -6, TransactionDate))
可能不是这样,但你明白了。
答案 1 :(得分:0)
我会在您的表中添加一个名为FiscalYear的计算列(通过正确的计算)并根据该列进行选择
答案 2 :(得分:0)
我认为最简单的方法是分两步完成。使用WHERE子句过滤您的YTD,然后使用GROUP BY按FY分组。由于您的FY从7月开始(7),如果月份大于6月(6),则增加FY。
WHERE CLAUSE:
WHERE
DATEDIFF(DAY, transaction_post_date, Cast(Month(GetDate()) as varchar) +
'/' + Cast(Day(GetDate()) as varchar) + '/' + CAST(Case WHEN
MONTH(transaction_post_date) > 6 then YEAR(transaction_post_date) + 1 else
Year(transaction_post_date) end as varchar)) >=0
GROUP BY CLAUSE:
GROUP BY CASE WHEN MONTH(transaction_post_date) > 6 then
Year(transaction_post_date) + 1 else YEAR(transaction_post_date) end