Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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
Mysql SQL过去12个月的累计值-每月明细_Mysql_Sql_Sql Server_Reporting Services_Ssrs 2008 - Fatal编程技术网

Mysql SQL过去12个月的累计值-每月明细

Mysql SQL过去12个月的累计值-每月明细,mysql,sql,sql-server,reporting-services,ssrs-2008,Mysql,Sql,Sql Server,Reporting Services,Ssrs 2008,有人能帮我写一个sql语句吗?我使用的是SSRSR1(sql或SSRS解决方案都可以) 我如何: 显示按月份和年份划分的计数度量 对于这些月份中的每一个,我想计算一下之前累积的12个月 e、 g 我已经开始编写这段代码,但它是不正确的,但是它让您了解我试图实现的目标(这个问题是我必须从一个日期开始计算月份和年份) 选择 计数 ,月(a.起始日期) ,年(a.起始日期) 从…起 A. 哪里 a、 StartDate>=DATEADD(mm,DATEDIFF(mm,0,@datepromt)-1

有人能帮我写一个sql语句吗?我使用的是SSRSR1(sql或SSRS解决方案都可以)

我如何:

  • 显示按月份和年份划分的计数度量
  • 对于这些月份中的每一个,我想计算一下之前累积的12个月
e、 g

我已经开始编写这段代码,但它是不正确的,但是它让您了解我试图实现的目标(这个问题是我必须从一个日期开始计算月份和年份)

选择
计数
,月(a.起始日期)
,年(a.起始日期)
从…起
A.
哪里
a、 StartDate>=DATEADD(mm,DATEDIFF(mm,0,@datepromt)-12,0)作为startdateYrAgo--2012年1月1日前的第一个月

a.StartDate这里您对查询有了一个想法,它必须如下所示

SELECT 
 periods.year
,periods.month
,measures.cnt
FROM (
    SELECT DISTINCT
      year = YEAR(StartDate)
    , month = MONTH(StartDate)
    , month_running = DATEDIFF(mm, 0, StartDate) 
    FROM a
    GROUP BY YEAR(StartDate), MONTH(StartDate), DATEDIFF(mm, 0, StartDate) 
) periods
JOIN (
    SELECT month_running = DATEDIFF(mm, 0, StartDate), cnt = COUNT(measure) 
    FROM a
    GROUP BY DATEDIFF(mm, 0, StartDate) 
) measures
ON measures.month_running BETWEEN periods.month_running - 12 AND periods.month_running - 1

你试过什么?你已经检查过日期函数了吗?你的问题是什么?欢迎来到堆栈溢出!我建议您阅读常见问题,了解如何在StackOverflow中提问。一个好的经验法则是:以“我需要”开头的问题不是一个好问题。您希望看到2011年12月的
dec
?是否希望从date\u valueselect count(a.measure) count ,month(a.StartDate) ,year(a.StartDate) from a where a.StartDate >= DATEADD(mm,DATEDIFF(mm,0,@datepromt)-12,0) as startdateYrAgo --1st month 1 year ago 01/01/2012 and a.StartDate <= DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@datepromt)+1,0)) as startdateEOM --last day of month 31/01/2013 group by month(a.StartDate) ,year(a.StartDate)
SELECT 
 periods.year
,periods.month
,measures.cnt
FROM (
    SELECT DISTINCT
      year = YEAR(StartDate)
    , month = MONTH(StartDate)
    , month_running = DATEDIFF(mm, 0, StartDate) 
    FROM a
    GROUP BY YEAR(StartDate), MONTH(StartDate), DATEDIFF(mm, 0, StartDate) 
) periods
JOIN (
    SELECT month_running = DATEDIFF(mm, 0, StartDate), cnt = COUNT(measure) 
    FROM a
    GROUP BY DATEDIFF(mm, 0, StartDate) 
) measures
ON measures.month_running BETWEEN periods.month_running - 12 AND periods.month_running - 1