t-SQL查询复杂滚动个

Posted

技术标签:

【中文标题】t-SQL查询复杂滚动个【英文标题】:t-SQL query complex rolling months 【发布时间】:2015-08-06 17:36:44 【问题描述】:

要求是,我们需要“生产日期”以下的记录:

today='2015-08-06 00:00:00.000'。

截至今天,production_date 仅在 7 月

9 月,生产日期为 7 月8 月

OCT,生产日期为7 月、8 月和 9 月 ..等等..

但一次 2016 年 1 月,生产日期仅来自 过去 6 个月

这意味着从 2016 年 2 月,productions_date 从 2015 年 8 月到 2016 年 1 月

附加信息:

Production_date 是一个日期列。我正在根据上述条件过滤记录。

我试过了:

Production_Date > DATEADD(month, DATEDIFF(month, 0,DATEADD(MM,DATEDIFF(m,DATEADD(month, DATEDIFF(month, 0, GETDATE()),0),'2016-01-01 00:00 :00.000')-6,GETDATE())), 0)

Production_Date

请让我知道如何在查询中解决这个问题。

【问题讨论】:

你想要什么?查询还是自定义函数?你有什么尝试吗?你能举例说明你将如何使用它吗? 嗨 Emacs,我想要一个带有可以过滤上述条件的表达式的查询。 【参考方案1】:
SELECT  columnlist
FROM    table
WHERE   ProductionDate >= DATEADD(MONTH, -6,
                                  DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()),
                                          0))
        AND ProductionDate < DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
        AND ProductioNDate >= '2015-07-01'

【讨论】:

谢谢!如果解决了您的问题,请将其标记为答案。

以上是关于t-SQL查询复杂滚动个的主要内容,如果未能解决你的问题,请参考以下文章

T-SQL:使用命名空间查询 xml

MDX 性能与 T-SQL

翻译——T-SQL的进阶之路:超过基础的2级水平:写子查询

T-SQL 选择连接 3 个表

T-sql语句查询执行顺序

SQL多表模糊查询