我有一个包含产品和销售日期列的表格,想查询每个产品组的销售间隔统计(最大间隔,最小间隔...),有什么好的建议可以制作吗,不胜感激~
Prod SaleDate
-------------------
A 2013-02-05
D 2013-02-24
B 2013-03-01
A 2013-03-12
D 2013-03-22
A 2013-04-03
D 2013-04-08
. . .
售出间隔是指两个相邻日期之间的天数间隔。
A的售出间隔: DATEDIFF(d, '2013-02-05', '2013-03-12') DATEDIFF(d, '2013-03-12', '2013-04-03') ...
D的售出间隔: DATEDIFF(d, '2013-02-24', '2013-03-22') DATEDIFF(d, '2013-03-22', '2013-04-08')
我想要获取销售间隔的平均值、最大值和最小值。
Prod IntervalAvg IntervalMax IntervalMin
-----------------------------------------------------
A xxx xxx xxx
B xxx xxx xxx
C
. . .
最佳答案
谢谢卡恩的回答给我一个提示。我通过“左外连接”重新实现 sql server 2000 的代码。
DECLARE @DATA TABLE (Prod CHAR(1), SaleDate SMALLDATETIME)
INSERT INTO @DATA VALUES ('A','2013-02-05')
INSERT INTO @DATA VALUES ('D','2013-02-24')
INSERT INTO @DATA VALUES ('B','2013-03-01')
INSERT INTO @DATA VALUES ('A','2013-03-12')
INSERT INTO @DATA VALUES ('D','2013-03-22')
INSERT INTO @DATA VALUES ('A','2013-04-03')
INSERT INTO @DATA VALUES ('D','2013-04-08')
SELECT
t.Prod
, MAX(t.Interval) IntervalMax
, MIN(t.Interval) IntervalMin
, AVG(t.Interval) IntervalAvg
FROM
(
SELECT t1.*, DATEDIFF(dd, MAX(t2.SaleDate), t1.SaleDate) Interval
FROM @DATA t1
LEFT OUTER JOIN @DATA t2 ON t1.Prod = t2.Prod AND t1.SaleDate > t2.SaleDate
GROUP BY t1.Prod, t1.SaleDate
)t
GROUP BY t.Prod
ORDER BY t.Prod
关于sql - 如何使用TSQL按组获取日期差异统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22952595/