Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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 滚动6个月_Sql_Date_Reporting Services_Ssms - Fatal编程技术网

Sql 滚动6个月

Sql 滚动6个月,sql,date,reporting-services,ssms,Sql,Date,Reporting Services,Ssms,我的报告中有两个参数,月份和年份 我还有一个表,在一列中有该特定月份的行数,在另一列中有该特定月份和未来5个月(滚动6个月)的行数 这两列都有一个链接到参数的表达式,如下所示: 月份表达式: 6个月表达: 我的参数使用我输入的特定值(1-12),所以当我的滚动月份每次增加1个值时,你可能会猜到,当我接近一年的后几个月时,这不会起作用,因为我的表达式不会滚动到下一年,只是在12月停止 概述:参数为整数值1-12,我不确定如何计算滚动6个月,当选择年末月份时,滚动6个月将结转到下一年。e、 g.

我的报告中有两个参数,月份和年份

我还有一个表,在一列中有该特定月份的行数,在另一列中有该特定月份和未来5个月(滚动6个月)的行数

这两列都有一个链接到参数的表达式,如下所示:

月份表达式:

6个月表达: 我的参数使用我输入的特定值(1-12),所以当我的滚动月份每次增加1个值时,你可能会猜到,当我接近一年的后几个月时,这不会起作用,因为我的表达式不会滚动到下一年,只是在12月停止


概述:参数为整数值1-12,我不确定如何计算滚动6个月,当选择年末月份时,滚动6个月将结转到下一年。e、 g.如果我选择11月作为我的月份参数,我的滚动6个月将只显示11月和12月的行总数,而不会显示到下一年。我假设这是因为我的月份值是整数,在我的表达式中,我给每个月的整数加上数字,因此我的滚动6将尝试加上11、12、13、14、15、16个月,而显然月份只到12个月。

这不是对你问题的回答,但看看这个,您可能能够找到SQL本身的解决方案

请参见下面的查询。将此视为您的报表源SQL.

DECLARE @A TABLE (ID INT IDENTITY(1,1),DT DATE)
INSERT INTO @A (DT) 
VALUES
('2013-01-26'),('2013-02-23'),('2013-03-20'),
('2013-04-23'),('2013-05-23'),('2013-07-23'),
('2013-08-23'),('2013-08-29'),('2013-09-23'),
('2013-12-10'),('2014-03-01')

如果您将结果与自身连接起来,如下面所示,您将在sql查询本身中获得结果,您只需要在报告中显示它。见下文

SELECT  DATEPART(YEAR,DT) [Y],DATEPART(MONTH,DT) [M],COUNT(*) [ROLLING 6] 
FROM    (
        SELECT  A.*
        FROM    @A A,@A B
        WHERE   ((DATEPART(YEAR,B.DT) * 12) + DATEPART(MONTH,B.DT)) BETWEEN 
                (DATEPART(YEAR,A.DT) * 12) + DATEPART(MONTH,A.DT) AND 
                ((DATEPART(YEAR,A.DT) * 12) + DATEPART(MONTH,A.DT) + 6)) LU
GROUP   BY DATEPART(YEAR,DT),DATEPART(MONTH,DT)
ORDER   BY [Y],[M]

这不是对您的问题的回答,但是看看这个,您可能能够找到SQL本身的解决方案

请参见下面的查询。将此视为您的报表源SQL.

DECLARE @A TABLE (ID INT IDENTITY(1,1),DT DATE)
INSERT INTO @A (DT) 
VALUES
('2013-01-26'),('2013-02-23'),('2013-03-20'),
('2013-04-23'),('2013-05-23'),('2013-07-23'),
('2013-08-23'),('2013-08-29'),('2013-09-23'),
('2013-12-10'),('2014-03-01')

如果您将结果与自身连接起来,如下面所示,您将在sql查询本身中获得结果,您只需要在报告中显示它。见下文

SELECT  DATEPART(YEAR,DT) [Y],DATEPART(MONTH,DT) [M],COUNT(*) [ROLLING 6] 
FROM    (
        SELECT  A.*
        FROM    @A A,@A B
        WHERE   ((DATEPART(YEAR,B.DT) * 12) + DATEPART(MONTH,B.DT)) BETWEEN 
                (DATEPART(YEAR,A.DT) * 12) + DATEPART(MONTH,A.DT) AND 
                ((DATEPART(YEAR,A.DT) * 12) + DATEPART(MONTH,A.DT) + 6)) LU
GROUP   BY DATEPART(YEAR,DT),DATEPART(MONTH,DT)
ORDER   BY [Y],[M]

这不是对您的问题的回答,但是看看这个,您可能能够找到SQL本身的解决方案

请参见下面的查询。将此视为您的报表源SQL.

DECLARE @A TABLE (ID INT IDENTITY(1,1),DT DATE)
INSERT INTO @A (DT) 
VALUES
('2013-01-26'),('2013-02-23'),('2013-03-20'),
('2013-04-23'),('2013-05-23'),('2013-07-23'),
('2013-08-23'),('2013-08-29'),('2013-09-23'),
('2013-12-10'),('2014-03-01')

如果您将结果与自身连接起来,如下面所示,您将在sql查询本身中获得结果,您只需要在报告中显示它。见下文

SELECT  DATEPART(YEAR,DT) [Y],DATEPART(MONTH,DT) [M],COUNT(*) [ROLLING 6] 
FROM    (
        SELECT  A.*
        FROM    @A A,@A B
        WHERE   ((DATEPART(YEAR,B.DT) * 12) + DATEPART(MONTH,B.DT)) BETWEEN 
                (DATEPART(YEAR,A.DT) * 12) + DATEPART(MONTH,A.DT) AND 
                ((DATEPART(YEAR,A.DT) * 12) + DATEPART(MONTH,A.DT) + 6)) LU
GROUP   BY DATEPART(YEAR,DT),DATEPART(MONTH,DT)
ORDER   BY [Y],[M]

这不是对您的问题的回答,但是看看这个,您可能能够找到SQL本身的解决方案

请参见下面的查询。将此视为您的报表源SQL.

DECLARE @A TABLE (ID INT IDENTITY(1,1),DT DATE)
INSERT INTO @A (DT) 
VALUES
('2013-01-26'),('2013-02-23'),('2013-03-20'),
('2013-04-23'),('2013-05-23'),('2013-07-23'),
('2013-08-23'),('2013-08-29'),('2013-09-23'),
('2013-12-10'),('2014-03-01')

如果您将结果与自身连接起来,如下面所示,您将在sql查询本身中获得结果,您只需要在报告中显示它。见下文

SELECT  DATEPART(YEAR,DT) [Y],DATEPART(MONTH,DT) [M],COUNT(*) [ROLLING 6] 
FROM    (
        SELECT  A.*
        FROM    @A A,@A B
        WHERE   ((DATEPART(YEAR,B.DT) * 12) + DATEPART(MONTH,B.DT)) BETWEEN 
                (DATEPART(YEAR,A.DT) * 12) + DATEPART(MONTH,A.DT) AND 
                ((DATEPART(YEAR,A.DT) * 12) + DATEPART(MONTH,A.DT) + 6)) LU
GROUP   BY DATEPART(YEAR,DT),DATEPART(MONTH,DT)
ORDER   BY [Y],[M]


Jack你在使用TSQL吗?@JithinShaji我不知道,我想我只是在使用普通的SQLI我是说你在使用SQL Server,right@JithinShaji是的,SQL Server管理研究Jack你在使用TSQL吗?@JithinShaji我不知道,我想我只是在使用普通的SQL我是说你在使用SQL Server,right@JithinShaji是 啊SQL Server管理研究Jack你在使用TSQL吗?@JithinShaji我不知道,我想我只是在使用普通的SQL我是说你在使用SQL Server,right@JithinShaji是的,SQL Server管理研究Jack你在使用TSQL吗?@JithinShaji我不知道,我想我只是在使用普通的SQL我是说你在使用SQL Server, right@JithinShaji是的,SQL Server管理研究确实比按照“使用SQL可以实现什么,使用它可以实现什么”的规则使用SSRS表达式更好:P@JithinShaji谢谢你的回复,我会用这种方式,而不是用表情,我现在想起来,这更有意义了。当然,比按照“使用SQL可以实现什么,使用它可以实现什么”的规则使用SSRS表达式更好的方法是:P@JithinShaji谢谢你的回复,我会用这种方式,而不是用表情,我现在想起来,这更有意义了。当然,比按照“使用SQL可以实现什么,使用它可以实现什么”的规则使用SSRS表达式更好的方法是:P@JithinShaji谢谢你的回复,我会用这种方式,而不是用表情,我现在想起来,这更有意义了。当然,比按照“使用SQL可以实现什么,使用它可以实现什么”的规则使用SSRS表达式更好的方法是:P@JithinShaji谢谢你的回复,我将尝试这种方式而不是表达方式,现在我想它更有意义。