创建会计周数

Posted

技术标签:

【中文标题】创建会计周数【英文标题】:create fiscal week number 【发布时间】:2017-06-14 15:55:00 【问题描述】:

如何将以下逻辑转换为 SQL Server 用于的格式?

if (datepart(week,getdate())-4) <= 0  then (datepart(week,getdate())+49) else (datepart(week,getdate())-4)

【问题讨论】:

只需制作一个包含财政周数的表格。以后你会感谢我的。 你试过什么?向我们展示您正在调试的内容。 感谢 Jacob,我们确实有一个内置日历,但对于像我这样的新用户来说,它过于复杂了,不过现在想快速创建自己的日历! 这就是@JacobH 稍后感谢他的意思——当你不必修复你已经忘记你刚刚“快速创建”的东西的地方时。 @JamesZ 然后当您需要在 10 个不同的报告中使用会计周时,您必须将“快速创建的东西”复制 10 次。然后,当您需要修改它时,您必须找到所有报告并快速更新快速创建的内容 10 次以上......然后当您需要新报告时,您必须再次找到快速创建的内容并将其复制到新的代码和......然后下次你回到那 10 个地方并更新你的代码,除了这次你忘记了第 11 个地方......你当然明白我要去哪里了。 【参考方案1】:

CASE 语句应该有效:

CASE 
    WHEN (datepart(week,getdate())-4) <= 0
        THEN datepart(week,getdate())+49
    ELSE
        datepart(week,getdate())-4
END

【讨论】:

【参考方案2】:

您可以使用case 表达式:

SELECT CASE WHEN (DATEPART(WEEK, getdate()) - 4) <= 0
            THEN DATEPART(WEEK, getdate()) + 49
            ELSE DATEPART(WEEK, getdate()) - 4
       END

【讨论】:

【参考方案3】:

对于 SQL Server 2012+,您可以使用IIF

SELECT IIF((datepart(week, getdate())-4) <= 0, datepart(week, getdate()) + 49, datepart(week, getdate()) - 4 )

对于低于 SQL Server 2012 的版本,您可以使用CASE

【讨论】:

以上是关于创建会计周数的主要内容,如果未能解决你的问题,请参考以下文章

ABAP中会计凭证的行项目怎样对应到物料凭证的行项目?

创建 会计凭证

Sage 50 会计 SDK 创建包含多个项目的销售报价单

如何在 SQL 中从生效日期创建时间序列

澳大利亚读会计与金融专业哪个大学好

oracle怎样从ap发票查会计分录