嗨,我想在同一份报告中制作一份包含年初至今和两年前信息的销售报告。我有这个查询作为选择 2007 年的示例,但我需要逐年执行,然后是 2012、2011、2010。在同一份报告中。任何想法?谢谢
我从表中选择字段名称,其中 DocDate > = '2007-01-01' 和 DocDate <='2007-12-31'
嗨,我想在同一份报告中制作一份包含年初至今和两年前信息的销售报告。我有这个查询作为选择 2007 年的示例,但我需要逐年执行,然后是 2012、2011、2010。在同一份报告中。任何想法?谢谢
我从表中选择字段名称,其中 DocDate > = '2007-01-01' 和 DocDate <='2007-12-31'
CREATE PROCEDURE GetSalesReport
@Year AS INT
AS
BEGIN
DECLARE @DateFrom AS DATETIME
DECLARE @DateTo AS DATETIME
SET @DateFrom = CONVERT(DATETIME,CONVERT(VARCHAR(4),@Year)+'0101')
SET @DateTo = GETDATE()
select field names
from tables
where DocDate > = @DateFrom and DocDate <=@DateTo
SET @DateFrom = CONVERT(DATETIME,CONVERT(VARCHAR(4),@Year-1)+'0101')
SET @DateTo = CONVERT(DATETIME,CONVERT(VARCHAR(4),@Year-1)+'1231')
select field names
from tables
where DocDate > = @DateFrom and DocDate <=@DateTo
SET @DateFrom = CONVERT(DATETIME,CONVERT(VARCHAR(4),@Year-2)+'0101')
SET @DateTo = CONVERT(DATETIME,CONVERT(VARCHAR(4),@Year-2)+'1231')
select field names
from tables
where DocDate > = @DateFrom and DocDate <=@DateTo
END
要做年初至今,只需输入“WHERE DocDate >= 2013-01-01”
每年制作一个 WHERE 条件 'WHERE DocDate >= 2012-01-01 and DocDate <= 2012-12-12'
如果您想要当前年初至今的所有数据以及过去 2-3 年的所有数据(标题显示 2,帖子显示 3)
select
YEAR(DocDate) as EachYear,
field names
from
tables
where
DocDate > = '2007-01-01'
order by
EachYear DESC
现在,如果您尝试进行一些聚合,例如年度销售计数、总计等,您将为“EachYear”计算列应用 GROUP BY
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