我有一个MS sql查询,其中我计算了我的车的总公里数。为了实现这一点,我创建了一个查询,获取最后的数据并从第一个数据中减去它。我可以每天实现这一目标,但现在我需要的是每天都有,但在日期范围之内。这是我的代码1日期过滤器。从ms sql中的第一个数据中减去最后一个数据,但是每天都这样做
SELECT TOP 1
(
(
(SELECT TOP 1 cast(kmrun as decimal(7,2)) as totkm
from [MARK_PASSIVE].[dbo].tblkmrun2
where PHILTIME BETWEEN '2015-03-02 00:00:00' AND '2015-03-02 23:59:00'
AND PLATENO = 'UUM572' ORDER BY PHILTIME DESC)
-
(SELECT TOP 1 cast(kmrun as decimal(7,2)) as totkm
from [MARK_PASSIVE].[dbo].tblkmrun2
where PHILTIME BETWEEN '2015-03-02 00:00:00' AND '2015-03-02 23:59:00'
AND PLATENO = 'UUM572' ORDER BY PHILTIME ASC)
)
) as finkm ,
(CONVERT(char(10), PHILTIME, 126)) as NEWDATE
from [MARK_PASSIVE].[dbo].tblkmrun2
where PHILTIME BETWEEN '2015-03-02 00:00:00' AND '2015-03-02 23:59:00'
现在这里是我的代码日期范围和结果以及。结果显示相同的,但由于即时得到总公里运行的每一天不是针对整个日期范围
SELECT DISTINCT (CONVERT(char(10), PHILTIME, 126)),
(
(
(
SELECT TOP 1 cast(kmrun as decimal(7,2)) as totkm
from [MARK_PASSIVE].[dbo].tblkmrun2
where PHILTIME BETWEEN '2015-03-01 00:00:00' AND '2015-03-06 23:59:00'
AND PLATENO = 'UUM572' group by kmrun ORDER BY PHILTIME DESC
) -
(
SELECT TOP 1 cast(kmrun as decimal(7,2)) as totkm
from [MARK_PASSIVE].[dbo].tblkmrun2
where PHILTIME BETWEEN '2015-03-01 00:00:00' AND '2015-03-06 23:59:00'
AND PLATENO = 'UUM572' ORDER BY PHILTIME ASC
)
)
) as finkm ,
(CONVERT(char(10), PHILTIME, 126)) as NEWDATE
from [MARK_PASSIVE].[dbo].tblkmrun2
where PHILTIME BETWEEN '2015-03-01 00:00:00' AND '2015-03-06 23:59:00'
ORDER BY NEWDATE DESC
这里的结果日期范围
一定是不一样的这里是预期的结果
与我的查询日期范围内的问题是计算整个日期范围,从1开始获取第一个数据,从6开始获取最后一个数据。
请帮助我为日期范围重新配置我的sql查询。
由于
数据为March1
数据为MAR2
数据为Mar3
数据为3月4日
数据为3月5日
数据为3月6日
结果可能会发生变化SI我只限于5个数据。
你能提供我们可以使用一些样本数据? – 2015-03-25 06:23:36
更新了我的帖子先生。 – Dodgeball 2015-03-25 06:32:37