我有下表[Store_Sales] -
Store Date Sales
1 23/04 10000
2 23/04 11000
1 22/04 10000
2 22/04 10500
1 21/04 10000
2 21/04 10550
我想要一个SQL,它会在特定商店的Sales列中返回类似值的“run”。例如,从上表中它将返回商店1的23日,22日和21日,因为它们都具有相同的值(10,000)。
我正在使用SQL Server 2008。
答案 0 :(得分:3)
看看这样的事情(完整的例子)
DECLARE @Store_Sales TABLE(
Store INT,
Date DATETIME,
Sales FLOAT
)
INSERT INTO @Store_Sales SELECT 1,'23 Apr 2010',10000
INSERT INTO @Store_Sales SELECT 2,'23 Apr 2010',11000
INSERT INTO @Store_Sales SELECT 1,'22 Apr 2010',10000
INSERT INTO @Store_Sales SELECT 2,'22 Apr 2010',10500
INSERT INTO @Store_Sales SELECT 1,'21 Apr 2010',10000
INSERT INTO @Store_Sales SELECT 2,'21 Apr 2010',10550
SELECT ss.Store,
MIN(ss.Date) StartDate,
MAX(ssNext.Date) EndDate,
ss.Sales
FROM @Store_Sales ss INNER JOIN
@Store_Sales ssNext ON ss.Store = ssNext.Store
AND ss.Date + 1 = ssNext.Date
AND ss.Sales = ssNext.Sales
GROUP BY ss.Store,
ss.Sales