我在这个领域很新,我想知道是否可能以及如何修复我写的代码:
begin;
DECLARE @income BIGINT;
DECLARE @outcome BIGINT;
set @income = (select cars_carID as y, (sum(datediff(returndate,rentdate)) * dayprice from rentals,cars where cars_carID= y) group by carID);
set @outcome=(select carID as x, (sum(maint_price) from maintenance,cars where Maint_carID = x) group by maint_carID);
select @income-@outcome;
end;
查询没问题,但它一直给我很少的变量错误,并编写了一些查询组合,如:
Select
Cars_carID as x,
(
select
(
select (sum(datediff(returndate,rentdate)) * dayprice)-(sum(Maint_Price)
from rentals, cars, maintenance
where cars_carID=carID
and Maint_carID = x
group by carID
)
)
这是无休止的。
答案 0 :(得分:0)
首先你有这个问题:
您的查询获得2个值,并希望将它们存储在一个变量中
这不起作用。
DECLARE @income BIGINT;
DECLARE @outcome BIGINT;
set @income = (select cars_carID as y,
(sum(datediff(returndate,rentdate)) * dayprice)
from rentals,
cars
where cars_carID= y
group by carID
);
将其更改为:
set @income = (select (sum(datediff(returndate,rentdate)) * dayprice)
from rentals
inner join cars on rentals.carID = cars.CarID
group by carID
);
此查询仍然无法运行,因为carID在group by中而不在select子句中,但是如果不知道你需要什么,我就无法完成查询。
它应该能够让你继续前进
也许应该是这样的
set @income = select sum(t.result)
from (select cars.carID,
(sum(datediff(returndate,rentdate)) * dayprice) as result
from rentals
inner join cars on rentals.carID = cars.CarID
group by carID
) t