Hej! Vilken version av SQL Server använder du? MS SQL Server 2005 Testa det här. Precis vad jag letade efter. Nu ska jag bara implementera den till min egen query.Antal dagar mellan senaste datum för inmatninga och det datumet innan det...
Har ett SQL problem som jag inte lyckas knäcka.
Har en tabel med mätvärden för en mängd olika maskiner. Varje mätvärde för dessa maskiner dokumenteras med ett datum. När jag gör select satsen har jag gjort så att jag endast det senaste mättillfället för vaje maskin syns.
Nu vill jag för varje maskin ta reda på antal dagar det är mellan det senaste mättillfället och mättillfället innan det.
Hur gör jag?Sv: Antal dagar mellan senaste datum för inmatninga och det datumet innan det...
Sv:Antal dagar mellan senaste datum för inmatninga och det datumet innan det...
Sv: Antal dagar mellan senaste datum för inmatninga och det datumet innan det...
Har gjort en testabell med testvärden utifrån vad du bekrev.
Hör av dig om jag missförstått något.
<code>
DECLARE @table TABLE (maskinid int, mätvärde int, datum datetime);
INSERT INTO @table VALUES (1, 100, '2009-08-01 12:13:14');
INSERT INTO @table VALUES (1, 101, '2009-08-03 12:13:14');
INSERT INTO @table VALUES (1, 102, '2009-08-06 12:13:14');
INSERT INTO @table VALUES (1, 103, '2009-08-08 12:13:14');
INSERT INTO @table VALUES (1, 104, '2009-08-09 12:13:14');
INSERT INTO @table VALUES (1, 105, '2009-08-11 10:13:14');
INSERT INTO @table VALUES (2, 200, '2009-08-02 12:13:14');
INSERT INTO @table VALUES (2, 201, '2009-08-04 12:13:14');
INSERT INTO @table VALUES (2, 202, '2009-08-07 12:13:14');
INSERT INTO @table VALUES (2, 203, '2009-08-08 12:13:14');
INSERT INTO @table VALUES (2, 204, '2009-08-10 12:13:14');
INSERT INTO @table VALUES (2, 205, '2009-08-11 12:13:14');
;WITH getmätvärden AS
(
SELECT
maskinid,
mätvärde,
datum,
ROW_NUMBER() OVER(PARTITION BY maskinid ORDER BY datum DESC) AS rn
FROM @table
)
SELECT
a.maskinid,
DATEDIFF(dd, b.datum, a.datum) AS [Antal dagar]
FROM getmätvärden a
CROSS JOIN getmätvärden b
WHERE (a.rn = 1) AND (b.rn = 2) AND (a.maskinid = b.maskinid);
</code>Sv:Antal dagar mellan senaste datum för inmatninga och det datumet innan det...
Stort tack!!!
MVH
Fredrik