I eine Tabelle mit vielen Variablen, die Zeitreihendaten Beispiel haben:Abrufen der Faust Zeile einer Abfrage von einer Liste
TagName Value DateTime Quality
Tag1 75 09/24/2015 01:05:10 192
Tag1 76.5 09/24/2015 01:05:20 192
Tag1 75 09/24/2015 01:05:40 192
Tag1 74.5 09/24/2015 01:06:00 192
Tag2 75 09/24/2015 01:05:10 192
Tag2 76.5 09/24/2015 01:05:20 192
Tag2 75 09/24/2015 01:05:40 192
Tag2 74.5 09/24/2015 01:06:00 192
ich brauche die Tags (Mehrfach-) zwischen Startdate und EndDate und ein Intervall abzufragen (5min/15 min)
Diese Abfrage funktioniert:
SELECT * FROM
(SELECT [DateAndTime],[TagName],[Val],row_number()over(partition by datepart(minute, [DateAndTime])order by [DateAndTime]) as "rn"
FROM [FloatTable] WHERE
([DateAndTime] BETWEEN @StartDateTime AND @EndDateTime) AND
([TagName] IN (@TagName)) AND
((DATEPART("n",[DateAndTime]) % @IntervalInMins = 0))) x
WHERE rn = 1
Mit den Parametern:
- Intervall: 5mins
- Tag: 'Tag1'
- Startdate: '2014.02.26 09.00.00'
- EndDateTime: '2014.02.26 11.00.00'
Ergebnis Abfrage:
TagName Value DateTime Quality
Tag1 75 09/24/2015 01:05:10 192
Tag1 76.5 09/24/2015 01:10:10 192
Tag1 75 09/24/2015 01:16:40 192
das funktioniert aber nur, wenn wir 1 Tag zu einem Zeitpunkt abfragen. Normalerweise möchten wir eine Liste von Tags abfragen. Wenn ich eine Liste von Tags 'Tag1, Tag2' abfrage, gibt die Abfrage nur Ergebnisse von Tag1. Bitte beraten.
Tag Ihre Frage mit der Datenbank Sie verwenden. –