我有一个车队列表,我试图计算平均每月和每年的里程数。
例如,车辆1970年制造于2015年,目前的里程表为105,341。这意味着卡车是2年或24个月大。因此,年平均值为52,670英里,月平均值为4,389英里。
我正在选择车辆编号,制造年份和当前的里程表读数。
字段M.ManufacturerYear是数据类型int,O.MeterLevel是数据类型varchar
如何编写计算字段以返回列表中每辆车的月平均值和年平均值?
答案 0 :(得分:0)
也许可以选择计算实际的月数,然后对结果进行年度化(或规范化)。
在下面的例子中,车辆2020只有7个月,但年度里程大于1970年车辆
示例强>
Declare @YourTable Table ([Vehicle] varchar(50),ManufacturerYear int,[Odometer] int)
Insert Into @YourTable Values
(1970,2015,105341)
,(2020,2017,25253)
Select *
,NbrMonths = datediff(month,left(ManufacturerYear,4) +'0101',GetDate())
,PerMonth = [Odometer] / datediff(month,left(ManufacturerYear,4) +'0101',GetDate())
,Annualized = ([Odometer] / datediff(month,left(ManufacturerYear,4) +'0101',GetDate()) ) * 12
From @YourTable
<强>返回强>
答案 1 :(得分:0)
以下示例代码适用于MS SQL Server中的类似方案。
CREATE TABLE #Vehicle
(
VehicldId int,
YearOfManufacture smallint,
TotalMiles int,
AverageYearlyMiles AS TotalMiles / (YEAR(GETDATE()) - YearOfManufacture),
AverageMonthlyMiles AS TotalMiles / ((YEAR(GETDATE()) - YearOfManufacture) * 12 + MONTH(GETDATE()))
)
insert into #Vehicle(VehicldId,YearOfManufacture,TotalMiles)
values ( 1970,2015,105400)
SELECT * FROM #Vehicle