2010-09-16 44 views
1

我有一個名爲[Store_Sales]下面的表格 -SQL找到匹配的值遊

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將返回一個類似的值的「運行」,在銷售列一個特定的商店。例如,從上表中可以看出,第23,22和第21個商店的庫存量爲1,因爲它們都具有相同的值(10,000)。

我使用SQL Server 2008的

+1

就是你店鋪標識,第一次約會,最後日期和銷售清單後價值,其中第一個和最後一個(含)之間的每個日期具有相同的銷售價值,並且日期範圍中沒有空白,並且日期範圍大於1天? – 2010-09-16 05:38:29

+0

這將是完美的 – 2010-09-16 05:42:04

回答

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