首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Where子句中的会计年度至今(T-SQL)

Where子句中的会计年度至今(T-SQL)
EN

Stack Overflow用户
提问于 2012-05-15 23:44:01
回答 3查看 5.1K关注 0票数 1

公司会计年度:7月1日-6月30日

我有一个查询,其中我试图获取本财年到目前为止按产品和成本中心划分的单位总数和$收入。它将在每月1号运行,并查看上个月的最后一天。会计年度不会出现在报告中-它是标准。

代码语言:javascript
运行
复制
    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会计年度。

我认为这是可行的:

代码语言:javascript
运行
复制
    Year(dateadd(month,6,htx.tx_post_date)) = Year(DateAdd(Month, 5, GetDate()))

反馈?

现在,我被要求将数量和收入的财政年初至今字段添加到以下查询中,该查询为我提供了总数

代码语言:javascript
运行
复制
    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

我需要在此报表中添加会计年度至今数量和金额列。相关的子查询会顺便走吗?连接会不会很棘手?我从未将子查询与聚合/分组查询一起使用。

感谢你之前的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-15 23:51:10

如果我需要按财年分组,我会这样做:

代码语言:javascript
运行
复制
Group by Year(DateAdd(Month, -6, TransactionDate))

也许不完全是这样,但你已经明白了。

票数 2
EN

Stack Overflow用户

发布于 2012-05-16 00:01:18

我将向表中添加一个名为FiscalYear的计算列(使用正确的计算),并根据该列进行选择

票数 0
EN

Stack Overflow用户

发布于 2015-01-08 05:10:41

我认为最简单的方法是分两步完成。使用WHERE子句筛选YTD,然后使用GROUP BY按FY分组。由于您的财年开始于7月(7),如果月份大于6月(6),则递增财年。

WHERE子句:

代码语言:javascript
运行
复制
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语句:

代码语言:javascript
运行
复制
GROUP BY CASE WHEN MONTH(transaction_post_date) > 6 then 
Year(transaction_post_date) + 1 else YEAR(transaction_post_date) end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10604275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档