如果您使用的是 SQL Server,这将起作用:
CREATE TABLE #Test
(
OrderID INT,
OrderName VARCHAR(400),
OrderVolume INT,
PlacedDate DATE,
Visit_Key INT
)
INSERT INTO #Test VALUES(1,'A',24,'10/12/2012',432)
INSERT INTO #Test VALUES(2,'A',24,'10/13/2012',432)
INSERT INTO #Test VALUES(3,'A',24,'10/14/2012',432)
INSERT INTO #Test VALUES(4,'B',27,'10/18/2012',432)
INSERT INTO #Test VALUES(5,'B',27,'10/18/2012',432)
INSERT INTO #Test VALUES(6,'A',24,'11/25/2012',432)
INSERT INTO #Test VALUES(7,'A',24,'11/25/2012',432)
INSERT INTO #Test VALUES(8,'A',24,'11/25/2012',432)
CREATE TABLE #Test2
(
OrderID INT,
OrderName VARCHAR(400),
OrderVolume INT,
PlacedDate DATE,
Visit_Key INT,
Prev_ordervol INT
)
INSERT INTO #Test2
(
OrderID,
OrderName,
OrderVolume ,
PlacedDate,
Visit_Key,
Prev_ordervol
)
SELECT
MIN(OrderID) AS 'orderid',
ordername,
ordervolume,
MIN(placeddate) AS 'placeddate',
MIN(Visit_Key) AS 'visit_key',
LAG(OrderVolume) OVER (ORDER BY orderid) AS 'previous ordervol'
FROM #Test
GROUP BY OrderVolume, ordername, orderid, placeddate
SELECT
OrderID,
OrderName,
OrderVolume,
PlacedDate,
Visit_Key
FROM #Test2
WHERE OrderVolume != Prev_ordervol OR Prev_ordervol IS NULL
DROP TABLE #Test
DROP TABLE #Test2