select CONVERT(varchar(30),dtime, 23) as dtime,positions.RID, [flightnumber], [airline], [departureairport], [arrivedairport], [departuretime], [arrivaltime],CONVERT(varchar(30),endle, 23) as endle, [weekly], routes.manag,routes.updatetime,[M_Taxes],routes.positions ,sum(Surplus) as surplus,sum(sold)/sum(amount) as mzl from positions,Routes where positions.RID in (SELECT Routes.RID FROM [Routes] WHERE ([flightnumber] = 'a123')) and flightnumber='a123' GROUP BY dtime,positions.RID, [flightnumber], [airline], [departureairport], [arrivedairport], [departuretime], [arrivaltime],endle, [weekly], routes.manag,routes.updatetime,[M_Taxes],routes.positions,surplus
sum结果当然不对。
你的语句期望对positions,Routes执行inner join联接,实际缺少联接条件,变成交叉联接。
where positions.RID in (SELECT Routes.RID FROM[Routes]WHERE ([flightnumber]='a123')) and flightnumber='a123'
应该写成:
where positions.RID=Routes.RID and Routes.flightnumber='a123'