Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从计算中删除月份_Sql_Sql Server_Sql Server 2008_Date - Fatal编程技术网

Sql 从计算中删除月份

Sql 从计算中删除月份,sql,sql-server,sql-server-2008,date,Sql,Sql Server,Sql Server 2008,Date,我有一个执行以下操作的查询: PriorClients = Sum of New Clients Between Dateadd(mm, -ComparisonMOnths, 'last day of month prior to conversionDate') and 'last day of month prior to conversiondate' 汇总转换为新软件前的客户端总数,并将其与转换为新软件后的客户端进行比较。我想做的是从数据中去掉转换月份。 我有以下专栏: New

我有一个执行以下操作的查询:

PriorClients = Sum of New Clients
Between Dateadd(mm, -ComparisonMOnths, 'last day of month prior to conversionDate')
    and 'last day of month prior to conversiondate'
汇总转换为新软件前的客户端总数,并将其与转换为新软件后的客户端进行比较。我想做的是从数据中去掉转换月份。
我有以下专栏:

NewClients, ConversionDate, ComparisonMonths
使用Dateadd,我可以得到以下公式:

PriorClients = Sum of New Clients
Between Dateadd(mm, -ComparisonMonths, ConversionDate) and ConversionDAte

AfterClients = Sum of New Clients
Between ConversionDate and DAteadd(mm, ComparisonMonths, ConversionDate)
挑战在于,转换日期随着每一行的变化而变化,就像比较月份一样。例如,如果转换日期为2013年12月10日,我希望:

PriorClients = Sum of New Clients
Between Dateadd(mm, -ComparisonMOnths, 'last day of month prior to conversionDate')
    and 'last day of month prior to conversiondate'
这个问题已经简化了。

是一篇关于MS SQL中舍入日期的优秀文章。在你的情况下,你想轮到这个月。扩展文章:

declare @dtVariable as datetime;
set @dtVariable = getdate();

select @dtVariable as Original,
       DATEADD(Month, DATEDIFF(Month, 0, @dtVariable), 0) as FirstDayOfMonth,
       DATEADD(DAY, -1, DATEADD( MONTH, 1, DATEADD(Month, DATEDIFF(Month, 0, @dtVariable), 0))) as LastDayOfMonth;
从这里可以很简单地调整查询以排除月份,方法是添加NOT BETWEEN或简单地将开始和参数调整为正确计算的月份。

我建议(1)为表命名(匿名表是SQL问题的祸根),以及(2)显示一些示例数据(输入)和预期结果(输出),对示例中未涉及的任何问题进行评论(但最好举例说明)。我感觉您过度简化了模式;我看不出当每一行附加了不同的日期范围时,如何处理多行。感觉您必须有两个表(因此我们需要两个表名和两组数据)。