我想在CruisePrice乘客次数之外创建一个新值TotalPrice。我有以下不起作用:
SELECT PlaceResidency, BirthDate, LastName, FirstName , (SELECT count (*) AS "PassengerAmount" FROM PASSENGER) , PassengerAmount * CruisePrise AS TotalPrice FROM PASSENGER, PERSON, CRUISE WHERE BirthDate >= 18 ORDER BY PlaceResidency, BirthDate, TotalPrice;
答案 0 :(得分:1)
您应该声明一个变量来保存乘客数量,并在需要的地方使用它以避免在子查询中重新计算。
DECLARE @PassengersCount INT = (SELECT count (*) FROM PASSENGER);
SELECT PlaceResidency, BirthDate, LastName, FirstName, @PassengersCount AS
PassengerAmount, @PassengersCount * CruisePrise AS TotalPrice
FROM PERSON, CRUISE
WHERE BirthDate >= 18
ORDER BY PlaceResidency, BirthDate, TotalPrice;
答案 1 :(得分:0)
请尝试这个解决方案可能有效:
SELECT PlaceResidency, BirthDate, LastName, FirstName
, (SELECT count (*) FROM PASSENGER) AS PassengerAmount
, ((SELECT count (*) FROM PASSENGER) * CruisePrise )AS TotalPrice
FROM PASSENGER, PERSON, CRUISE
WHERE BirthDate >= 18
ORDER BY PlaceResidency, BirthDate, TotalPrice;