Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 - Fatal编程技术网

年初至今和两年前的SQL报表

年初至今和两年前的SQL报表,sql,sql-server,Sql,Sql Server,您好,我想做一份销售报告,在同一份报告中包含今年迄今和两年前的信息。我以这个查询为例,选择2007年,但我需要每年做一次,然后是201220112010。在同一份报告中。 有什么想法吗?谢谢 我有选择的字段名, 从桌子上看, where DocDate>='2007-01-01'和DocDate年初至今只需输入'where DocDate>=2013-01-01' 对于每年,创建一个WHERE条件“WHERE DocDate>=2012-01-01和DocDate创建过程GetSalesRepo

您好,我想做一份销售报告,在同一份报告中包含今年迄今和两年前的信息。我以这个查询为例,选择2007年,但我需要每年做一次,然后是201220112010。在同一份报告中。 有什么想法吗?谢谢

我有选择的字段名, 从桌子上看,
where DocDate>='2007-01-01'和DocDate年初至今只需输入'where DocDate>=2013-01-01'

对于每年,创建一个WHERE条件“WHERE DocDate>=2012-01-01和DocDate
创建过程GetSalesReport”
@年份为整数
作为
开始
将@DateFrom声明为DATETIME
将@DateTo声明为DATETIME
设置@DateFrom=CONVERT(DATETIME,CONVERT(VARCHAR(4),@Year)+'0101'))
设置@DateTo=GETDATE()
选择字段名
从桌子上

其中DocDate>=@DateFrom和DocDate=@DateFrom和DocDate=@DateFrom和DocDate,如果您想要从当前年份到现在再加上过去2-3年的所有数据(标题显示2,帖子显示3)

现在,如果您试图对一些聚合(如年度销售计数、总数等)进行计算,您将为“EachYear”计算列应用GROUPBY

select
      YEAR(DocDate) as EachYear,
      sum( someTable.orderAmt ) as TotalOrdered,
      count(*) as NumberOrders,
      avg( someTable.OrderAmt ) as AvgOrder
   from 
      tables
   where 
      DocDate > = '2007-01-01'
   GROUP BY
      Year(DocDate)
   order by
      Year(DocDate) DESC

当我声明变量时,我在fiel@datefrom?@datefrom中输入了我想要的天数。datefrom是您的开始日期,DateTo是您的结束日期。我想在子查询中使用一年。我如何才能使集合功能在子查询中起作用?
select
      YEAR(DocDate) as EachYear,
      field names
   from 
      tables
   where 
      DocDate > = '2007-01-01'
   order by
      EachYear DESC
select
      YEAR(DocDate) as EachYear,
      sum( someTable.orderAmt ) as TotalOrdered,
      count(*) as NumberOrders,
      avg( someTable.OrderAmt ) as AvgOrder
   from 
      tables
   where 
      DocDate > = '2007-01-01'
   GROUP BY
      Year(DocDate)
   order by
      Year(DocDate) DESC