公司会计年度: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 - 7/1/current year的年份的特定日期的SQL?
我不善于使用变量,甚至不知道我是否有权在SQL Server DB上创建它们,而SQL Server DB是相当受限制的。绝对不能创建函数。(我是一名业务分析师。)
更新,会计年度向前推进,所以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我需要在此报表中添加会计年度至今数量和金额列。相关的子查询会顺便走吗?连接会不会很棘手?我从未将子查询与聚合/分组查询一起使用。
感谢你之前的帮助。
发布于 2012-05-15 23:51:10
如果我需要按财年分组,我会这样做:
Group by Year(DateAdd(Month, -6, TransactionDate))也许不完全是这样,但你已经明白了。
发布于 2012-05-16 00:01:18
我将向表中添加一个名为FiscalYear的计算列(使用正确的计算),并根据该列进行选择
发布于 2015-01-08 05:10:41
我认为最简单的方法是分两步完成。使用WHERE子句筛选YTD,然后使用GROUP BY按FY分组。由于您的财年开始于7月(7),如果月份大于6月(6),则递增财年。
WHERE子句:
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)) >=0GROUP BY语句:
GROUP BY CASE WHEN MONTH(transaction_post_date) > 6 then
Year(transaction_post_date) + 1 else YEAR(transaction_post_date) endhttps://stackoverflow.com/questions/10604275
复制相似问题