У меня возникла ситуация, когда мне нужно итерировать условие, основанное на вводе предложения, интересно, как это можно сделать.Итерация внутри подзапроса
Фон, в одном блоке хранения, состоит из нескольких резервуаров, каждый танк имеет свой собственный измеренный статус танков, с другой последней измеренной датой, как я могу получить последнее значение погружения определенной даты?
Пример:
Tank A having last measured date (EndDate) as 01 Feb 2015.
Tank B having last measured date (EndDate) as 31 Jan 2015.
Tank B having last measured date (EndDate) as 17 Feb 2015.
Tank C having last measured date (EndDate) as 18 Feb 2015.
Структура таблицы:
Tanks| DipDaytime| Volume| EndDate
A, 28 Jan 2015 8pm, 1000, 01 Feb 2015
B, 30 Jan 2015 5pm, 2000, 31 Jan 2015
B, 01 Feb 2015 5pm, 2500, 17 Feb 2015
C, 01 Feb 2015 3pm, 3000, 18 Feb 2015
Ожидаемый результат будет:
For 31 Jan 2015:
A, 28 Jan 2015 8pm, 1000, 01 Feb 2015
B, 30 Jan 2015 5pm, 2000, 31 Jan 2015
For 18 Feb 2015:
A, 28 Jan 2015 8pm, 1000, 01 Feb 2015
B, 01 Feb 2015 5pm, 2500, 17 Feb 2015
C, 01 Feb 2015 3pm, 3000, 18 Feb 2015
я смог выйти что-то вроде этого:
SELECT ts.Tanks, ts.DipDaytime, ts.EndDate , ts.Volume
FROM table ts
WHERE ts.EndDate =
(SELECT MAX(ts2.EndDate) FROM table ts2
WHERE ts2.Tanks = ts.Tanks
AND ts2.EndDate <= '17.02.2014')
Проблемы в том, что мне нужно изменить 17.01.2014 каждый раз мне нужен другой результат для определенной даты, и я не могу отобразить 17.01.2014 как часть результата запроса, поскольку он не является частью Таблица.
Как я могу использовать его в динамическом режиме, когда мне нужно указать диапазон дат, говорит с 01.02.2014 по 28.02.2014, чтобы получить полный результат? и временный столбец, который показывает отчетную дату?
Конечный результат будет тогда:
For 31 Jan 2015:
Tank | DipDaytime| Volume| EndDate, ReportDate
A, 28 Jan 2015 8pm, 1000, 01 Feb 2015, 31 Jan 2015
B, 30 Jan 2015 5pm, 2000, 31 Jan 2015, 31 Jan 2015
For 18 Feb 2015:
Tank | DipDaytime| Volume| EndDate, ReportDate
A, 28 Jan 2015 8pm, 1000, 01 Feb 2015, 18 Feb 2015
B, 01 Feb 2015 5pm, 2500, 17 Feb 2015, 18 Feb 2015
C, 01 Feb 2015 3pm, 3000, 18 Feb 2015, 18 Feb 2015
Оценил если кто может помочь. Благодарю.
почему танк А появляясь в обоих случаях? –
@SagarJoon: потому что нет никаких изменений в танке А между 31.01 и 18.02? – Andomar