我有一个情况,我需要根据where子句中输入要迭代的情况下,不知道如何可以做到。迭代里面的子查询
的背景是,在一个存储单元,它由几个罐,每个储罐有它自己的坦克倾角测量状态,用不同的最后一次测量的日期,我怎样才能获得特定日期的最新浸价值?
例子:
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')
问题是我需要改变2014年1月17日每次我需要一个不同的结果对于特定的日期,还我不能显示2014年1月17日作为查询结果的一部分,因为它不是部分表。
我怎么能有它在一个动态的方式在那里我只需要提供一个日期范围,说,来自2014年2月1日至2014年2月28日,以获得完整的结果呢?和显示报告日期的临时列?然后
最终的结果将是:
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
感激,如果任何人都可以提供帮助。谢谢。
为什么箱体A是出现在两种情况下? – 2015-02-24 11:28:52
@SagarJoon:因为31.01和18.02之间的A罐没有变化? – Andomar 2015-02-24 11:33:09