SQL查找匹配值的运行

时间:2010-09-16 05:34:56

标签: sql tsql sql-server-2008

我有下表[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。

1 个答案:

答案 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