抱歉,菜鸟们!关于查询数据库,我还很陌生。 好吧,简而言之,我正在尝试计算月数。我想为销售创建一个列,该列实际上被推迟了一个月,因此我可以通过以下方式创建MoM的计算: (((SalesColumn-PushedSales)/ PushedSales)* 100。
我的目标是首先将日期的月份部分推1个月,然后将日期部分更改为每月1号。
我要完成的工作是找到一种积累这两个语句的方法。
DATEADD(MONTH, 1, Order_Date) & DATEFROMPARTS(YEAR(Order_Date), MONTH(Order_Date), DAY(0))
PART 1:
SELECT DATEADD(MONTH, 1, Order_Date), Sales
FROM Orders
ORDER BY Order_Date
PART 2:
SELECT DATEFROMPARTS(YEAR(Order_Date),MONTH(Order_Date),DAY(0)), Sales
FROM Orders
ORDER BY Order_Date
我已经完成了第1部分:
SELECT DATEADD(MONTH, 1, Order_Date), Sales
FROM Orders
ORDER BY Order_Date
并创建了一个视图
然后使用该视图完成第二部分:
SELECT DATEFROMPARTS(YEAR(Order_Date), MONTH(Order_Date), DAY(0)),[Sales]
FROM Orders
ORDER BY Order_Date
除了给人一种操作日期的效率很低的方式之外,这给了我正确的答案。
答案 0 :(得分:0)
如果我理解正确,我认为这可以为您提供所需的东西:dateadd(month,1,dateadd(day,1-day(Order_Date),Order_Date))
答案 1 :(得分:0)
SQLServer 2012+具有函数EOMonth,该函数返回传入日期的月份的最后一天。为此添加一天,就可以开始下一个工作 月份(没有SOMonth推论a)
DATEADD(Day, 1, EOMonth(Order_Date))
将2000年1月23日传递给它,它将EOMonth传递给2000年1月31日,然后再加上一天的时间使您到达2000年2月1日
您无需创建视图即可将一个函数的输出用作另一个函数的输入,只需将函数链接(嵌套)即可:
A(B(C(column)))
这将调用函数C并传入列,然后从C中获取输出并将其传递给B,然后从B中获取输出并将其传递给A
如果您要嵌套很多函数调用,每个函数都带有参数
,最好明智地格式化(缩进)代码