Это продолжение вопроса, который я разместил ранее. Этот код делает именно то, о чем я спрашивал, но после того, как он наконец заработал, я понял, что то, что я пытался сделать, на самом деле не совсем то, что мне нужно.
DECLARE @StartDateTime datetime = '2015-07-13 14:00:00',
@EndDateTime datetime = '2015-07-13 16:00:00';
WITH JumpsOf15 AS
(
SELECT ROW_NUMBER() OVER(ORDER BY object_id) * 15 AS Step
FROM sys.objects
),
Dates as
(
SELECT currentDate = steppedDate.steppedDate
FROM JumpsOf15
CROSS APPLY(SELECT DATEADD(MINUTE,Step,@StartDateTime) AS steppedDate ) AS steppedDate
WHERE @EndDateTime>steppedDate.steppedDate
)
SELECT d.currentDate, t.Value, t.FK_ConfigId
FROM Dates AS d
OUTER APPLY
( SELECT TOP 1 t.[Timestamp], t.Value, t.FK_ConfigId
FROM myTable AS t
WHERE t.[Timestamp] <= d.currentDate and t.FK_ConfigId in (208812, 208809, 208815)
ORDER BY t.[Timestamp] DESC, t.Value, t.FK_ConfigId
) AS t
Это дает такой вывод:
currentDate value FK_ConfigId
1/1/2015 12:15 2 208809
1/1/2015 12:30 5 208815
1/1/2015 12:45 1 208815
Но на самом деле мне нужно иметь одну запись на метку времени для каждого уникального FK_ConfigId
, который я указываю в списке. Прямо сейчас я получаю только одну запись на отметку времени независимо от идентификатора конфигурации. Результат, который я хочу:
currentDate value FK_ConfigId
1/1/2015 12:15 2 208809
1/1/2015 12:15 4 208815
1/1/2015 12:30 5 208809
1/1/2015 12:30 1 208815
Как я мог этого добиться?
top 1
в своем последнем внешнем приложении, посмотрите, что это вам даст. - person Andrew   schedule 14.07.2015GROUP BY
в запросе - person Vamsi Prabhala   schedule 14.07.2015group by FK_ConfigId ,currentDate
, а затем вам нужно будет решить, какое «значение» взять (минимальное, максимальное и т. д.). - person Andrew   schedule 14.07.2015