У меня есть следующий запрос:
SELECT d.currentDate, t.ConfigId, t.value as value
FROM #Dates AS d
OUTER APPLY
( SELECT t.value as value, t.FK_ShipDataSubsystemConfigId
FROM myTable AS t
WHERE t.[Timestamp] <= d.currentDate and t.ConfigId in (' + @IDList + ')
and t.FK_DataSystemId <> 1
) AS t
GROUP BY d.currentDate, t.ConfigId
)
где Dates
— это просто таблица, содержащая кучу дат и времени, которые я использую, чтобы получать данные с нужными мне интервалами.
Моя проблема связана с предложением group by
. Запрос не работает как есть, потому что value
не входит в group by
или агрегатную функцию. Я попытался сгруппировать по value
также, чтобы ошибка исчезла, но она просто дает мне каждую отдельную дату в интервале, который я выбираю, в соответствии с каждым отдельным значением - не то, что я хочу. В итоге у меня должна получиться таблица с одной строкой для каждой пары дата/ConfigId.
Когда я удаляю значение из select
и просто получаю дату и ConfigId
, все работает нормально. Я получаю точное количество строк, которые я должен получить.
Таблица, которую я извлекаю, выглядит так:
PK_DataId Timestamp value ConfigId
1 1/1/2015 12:00 234 5
2 1/1/2015 12:01 456 4
Я ожидаю получить обратно это:
Timestamp value ConfigId
1/1/2015 12:00:00 234 5
1/1/2015 12:00:00 456 4
Где у меня есть значение для каждой пары configId/date каждые пятнадцать минут. Когда я добавляю max(value), я каждый раз получаю только одно значение, а не разные. Когда я группирую по значению, я получаю миллионы строк, похоже, что я получаю одну строку для каждой временной метки, совпадающей с каждым значением из любой другой временной метки. Я не очень понимаю, что происходит.
Как я могу получить эти результаты, выбрав value
?
aggregate
в столбецvalue
. - person Vamsi Prabhala   schedule 16.07.2015value
, но вы не говорите, какое значениеvalue
вам нужно нужно. Так что это? Самый высокий? Самый низкий? Средний? - person Bacon Bits   schedule 16.07.2015