首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dateadd的SQL Server

使用dateadd的SQL Server
EN

Stack Overflow用户
提问于 2015-07-27 08:30:15
回答 2查看 81关注 0票数 1

我正在重新提出我的问题。我有一个简单的表格如下:

代码语言:javascript
复制
Item       Date       QTY
Chair      12/6/08    69

我喜欢使用SQL Server在Date列之前的三年和Date列之后的三年内从Item列中提取这些项。

例如,Chair项目,我想知道在2008年12月6日之前的三年内售出了多少椅子;在2008年12月6日或2008年12月6日之后售出了多少椅子。

下面是我期望每年的产出和椅子的销量。我正在考虑使用Dateadd函数,但还不确定如何编写它。非常感谢。

代码语言:javascript
复制
Year3   Year2   Year1     Date      Year1    Year2     Year3
12/5/05 12/5/06 12/5/07   12/6/08   12/6/09  12/6/10   12/6/11
199     322     233                 344      783       564
EN

回答 2

Stack Overflow用户

发布于 2015-07-27 13:13:24

下面是来自tsql的概念证明,因为我不确定年度汇总,您是否需要汇总或切片总和。

代码语言:javascript
复制
declare @t table (item varchar(50), [date] date, Qty int)

insert into @t
values
('Chair', '20080612', 69),
('Chair', '20070612', 7),
('Chair', '20060612', 6),
('Chair', '20050612', 5),
('Chair', '20040612', 4),
('Chair', '20030612', 3),
('Chair', '20020612', 2),
('Chair', '20010612', 1),
('Chair', '20090612', 9),
('Chair', '20100612', 10),
('Chair', '20110612', 11),
('Chair', '20120612', 12)


select t.item
    , sum(case when  t1.[date] >= Dateadd(year, -3, t.[date]) and t1.[date] < t.[date] then t1.Qty else 0 end) as [-year3]
    , sum(case when  t1.[date] >= Dateadd(year, -2, t.[date]) and t1.[date] < t.[date] then t1.Qty else 0 end) as [-year2]
    , sum(case when  t1.[date] >= Dateadd(year, -1, t.[date]) and t1.[date] < t.[date] then t1.Qty else 0 end) as [-year1]
    , t.date
    , SUM(case when t1.[date] <= DATEADD(year, 1, t.[date]) and t1.[date] > t.[date] then t1.Qty else 0 end) as [+year1]
    , SUM(case when t1.[date] <= DATEADD(year, 2, t.[date]) and t1.[date] > t.[date] then t1.Qty else 0 end) as [+year2]
    , SUM(case when t1.[date] <= DATEADD(year, 3, t.[date]) and t1.[date] > t.[date] then t1.Qty else 0 end) as [+year3]
from @t t join @t t1 on t.item = t1.item
group by t.date, t.item
order by 1
票数 0
EN

Stack Overflow用户

发布于 2015-07-27 12:30:46

您可以使用条件方法来获取所需的数据。将所需日期设置为轴心点

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31643416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档