*场景*
我有一个公交车操作,一些公交车一天加一次油,假设一辆公交车(4345)在2017年4月9日加了一次油,2017年3月9日加了2次油。
我有一个查询,从某个日期(DateFrom和DateTo)运行,并获得每辆车的燃料条目,这是一个以上的选择日期range.........but我需要从某些日期范围(DateFrom -- DateTo)的结果,并在此插页为每辆车的每个日期有多少次车辆加满fuel..for更好地理解你可以看到与此附加的图像...我使用的查询如下:
WITH Records_counts AS
(
SELECT f.*, COUNT(*) OVER (PARTITION BY bus1) ct
FROM Fuel.vFuelEntriesDetails f
)
SELECT * FROM Records_counts WHERE ct > 1
AND FuelEntryDate >='2017-09-03' and FuelEntryDate <'2017-09-05'
AND ( BusNo BETWEEN '10161/1' AND '10180/1' )
ORDER BY BusNo DESC

发布于 2017-10-16 20:13:02
正如@戈登·林诺夫所说,请提供样本数据,以便清楚地了解预期输出。
根据我的理解,我已经为示例demo创建了以下表格:
表:
create table tbl_vehicle
(
busno varchar(10),
plateno int,
coldate date
);记录:
insert into tbl_vehicle values('1016/1',4345,'2017-09-03'),('1016/1',4345,'2017-09-03'),
('1016/1',4345,'2017-09-03'),('1016/1',4345,'2017-09-04');查询:
SELECT plateno,coldate,COUNT(*) as fuel_fill_count
FROM tbl_vehicle
WHERE coldate BETWEEN '2017-09-03' and '2017-09-05'
and busno BETWEEN '1016/1' AND '10180/1'
GROUP BY plateno,coldate 输出:
plateno coldate fuel_fill_count
------------------------------------
4345 2017-09-03 3
4345 2017-09-04 1注意:在SQL Server2008 R2上进行了测试。
发布于 2017-10-16 20:12:29
你可以试试这个。
;WITH Records_counts AS
(
SELECT f.*, COUNT(*) OVER (PARTITION BY FuelEntryDate, BusNo) ct
FROM Fuel.vFuelEntriesDetails f
)
SELECT * FROM Records_counts WHERE
FuelEntryDate >='2017-09-03' and FuelEntryDate <'2017-09-05'
AND ( BusNo BETWEEN '10161/1' AND '10180/1' )
ORDER BY BusNo DESC发布于 2017-10-17 12:28:24
@Sarslan....很抱歉,你发布的这个query....which下的结果是错误的。

https://stackoverflow.com/questions/46769714
复制相似问题