【问题标题】:Display sum from previous year显示上一年的总和
【发布时间】:2016-07-28 23:22:34
【问题描述】:

我有如下选择语句:

  select [Fiscal Year], sum([value]), 
         YEAR(DATEADD(year,-1,[Fiscal Year])) as previous_year
  from [table1] 
  group by [Fiscal Year]

如何在上一年的previous_yearsum([value])之后添加?

【问题讨论】:

  • LAG/LEAD 如果 SQL Server 2012+,如果较低则自加入
  • @4est 很高兴为您提供帮助!

标签: sql sql-server sql-server-2008 datetime sqldatetime


【解决方案1】:
--to prepare the environment, let said this is your table
declare @table table
(
  fiscalYr integer,
  Value integer,
  previousyr integer,
  prevValue integer
)

--to prepare the value, let said these are your value
insert into @table values (2014,165,2013,0);
insert into @table values (2015,179,2014,0);
insert into @table values (2016,143,2015,0);

--the SQL
select A.fiscalYr,A.Value,A.previousyr, B.Value
from @table A left join
@table B on B.fiscalYr = A.previousyr

这就是我得到的答案

财政年度|价值|上一页|价值

2014| 165| 2013|空

2015| 179| 2014| 165

2016| 143| 2015| 179

【讨论】:

    【解决方案2】:

    请尝试以下 SQL 2008 查询

    select t1.[Fiscal Year],t1.Value,(t1.[Fiscal Year]-1) [previous_year],t2.Value [previous_value]
    from  
    (  select [Fiscal Year], sum([value]) value
      from [table1] 
      group by [Fiscal Year] 
    )t1
    LEFT JOIN
    (  
    select [Fiscal Year], sum([value]) value
      from [table1] 
      group by [Fiscal Year] 
    )t2
    ON t1.[Fiscal Year]=t2.[Fiscal Year]+1
    

    SQL demo link

    【讨论】:

      【解决方案3】:

      如果您使用的是 SQL Server 2012+,则可以使用 LAG 获取上一行的值:

      ;with cte as (
        select [Fiscal Year], sum([value]) AS value, 
        from [table1] 
        group by [Fiscal Year]
      )
      select [Fiscal Year], value, 
             [Fiscal Year] - 1, lag(value) over (order by [Fiscal Year]) as prev_value
      from cte
      

      【讨论】:

      • 这是 SQL Server 2008 :/,这是另一种方法吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多