none
Zeit Diff in 2 Zeilen RRS feed

  • Frage

  • Hallo,

    ich habe folgende Tabelle

    lfd      gate       Datum               Status

    456    100       25.07.2012          1
    456    120       26.07.2012          1
    456    140       31.08.2012          1
    456    150       Null                      0

    Für eine KPI Berechnung brauche ich Dauer in Tagen wie lange von Gate 100 - 140
    gebraucht wurde.
    Für einen Tipp wäre ich sehr dankbar.

    Chris


    Montag, 10. Dezember 2012 09:43

Antworten

  • Hallo Chris,

    da ich nicht weiß, welches Kriterium für die Auswahl von Relevanz ist, gehe ich von Status = 1 aus. Mit dem nachfolgenden Code kannst Du die Differenzen ermitteln.

    DECLARE	@t TABLE
    (
    	lfd	int	NOT NULL	IDENTITY (456, 1) PRIMARY KEY,
    	gate	tinyint	NOT NULL,
    	Datum	date	NOT NULL,
    	Status	tinyint	NOT NULL	DEFAULT (0)
    );
    
    INSERT INTO @t (gate, Datum, Status)
    VALUES
    (100, '20120725', 1),
    (120, '20120726', 1),
    (140, '20120831', 1)
    
    ;WITH CTE
    AS
    (
    	SELECT	ROW_NUMBER() OVER (ORDER BY Datum)	AS	RowNumber,
    			gate,
    			Datum
    	FROM	@t
    	WHERE	Status = 1
    )
    SELECT	cte.rownumber,
    		r.rownumber,
    		DATEDIFF(dd, cte.Datum, r.Datum)
    FROM	CTE INNER JOIN CTE r
    		ON	(cte.RowNumber = r.RowNumber - 1)


    Uwe Ricken

    MCITP Database Administrator 2005
    MCITP Database Administrator 2008
    MCITP Microsoft SQL Server 2008, Database Development

    db Berater GmbH
    http://www-db-berater.de
    SQL Server Blog (german only)

    Montag, 10. Dezember 2012 10:39

Alle Antworten