Welcome to Sign in | Help

Re: select cu eliminare de randuri

  •  06-18-2008, 11:11 AM

    Re: select cu eliminare de randuri

    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
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems