Să considerăm tabela şi datele de test de mai jos:
CREATE TABLE Tabela (
Data datetime PRIMARY KEY,
Tip char(1) NOT NULL CHECK (Tip IN ('A','B'))
)
INSERT INTO Tabela VALUES ('20080101','A')
INSERT INTO Tabela VALUES ('20080102','A')
INSERT INTO Tabela VALUES ('20080103','B')
INSERT INTO Tabela VALUES ('20080104','A')
INSERT INTO Tabela VALUES ('20080205','B')
INSERT INTO Tabela VALUES ('20080206','A')
INSERT INTO Tabela VALUES ('20080207','A')
INSERT INTO Tabela VALUES ('20080308','A')
INSERT INTO Tabela VALUES ('20080309','B')
INSERT INTO Tabela VALUES ('20080310','A')
Dacă foloseşti SQL Server 2005, următorul query furnizează rezultatele dorite:
WITH T AS (
SELECT *, ROW_NUMBER() OVER (ORDER BY Data) n
FROM Tabela
)
SELECT x.Data, x.Tip FROM T x
LEFT JOIN T y ON x.n=y.n+1 AND y.Tip='B'
WHERE x.Tip='B' OR y.Tip='B' OR x.n=1
Răzvan