oracle 10g通过引发列数相同的异常来选择组
它正在抛出异常oracle 10g通过引发列数相同的异常来选择组,oracle,Oracle,它正在抛出异常 select case when exists (select "CreatedOn" dategn from "RentedVehicle" where "fkTempVehicleId"=3) then case when exists (select "CreatedOn" dategn from "Transfer" where "fkTempVehicleId"=3) then
select
case when exists (select "CreatedOn" dategn from "RentedVehicle" where "fkTempVehicleId"=3)
then
case when exists (select "CreatedOn" dategn from "Transfer" where "fkTempVehicleId"=3)
then
(select
case when rent.dategn>tran.dategn then rent.dategn else tran.dategn end dategn,
case when rent.dategn>tran.dategn then rent.fuel else tran.fuel end fuel
from
(
select max("CreatedOn") dategn,"CheckInFuel" fuel
from "RentedVehicle" where "fkTempVehicleId"=3
group by "RentedVehicle"."CheckInFuel"
) rent ,
(select max("CreatedOn") dategn,"fkFuelLevelId" fuel
from "Transfer" where "fkTempVehicleId"=3 group by "Transfer"."fkFuelLevelId") tran)
else
(select
max("CreatedOn") dategn,"CheckInFuel" fuel
from "RentedVehicle" where "fkTempVehicleId"=3 group by "RentedVehicle"."CheckInFuel") end
else
case when exists (select "CreatedOn" dategn from "Transfer" where "fkTempVehicleId"=3)
then
(select max("CreatedOn") dategn,"fkFuelLevelId" fuel
from "Transfer" where "fkTempVehicleId"=3 group by "Transfer"."fkFuelLevelId")
else
(select "CreatedOn" dategn,"InitialFuel" fuel from "TempVehicle" where "pkTempVehicleId"=3)
end end from dual;
我肯定我错过了一些东西,但我几乎尝试了所有东西。
请帮助并详细说明我遗漏了什么案例语句的内联选择部分返回两个值dategn和fuel,其中只允许一个值:
ORA-00913: too many values
00913. 00000 - "too many values"
*Cause:
*Action:
Error at Line: 6 Column: 2
case在每行调用时,每行只能返回一个值。我删除了这一行,case when rent.dategn>tran.dategn然后rent.fuel else tran.fuel end fuel。相同的Error@KhurramZulfiqarAli-您的最终选择,选择CreatedOn dategn,初始化来自TempVehicle的燃油,其中pkTempVehicleId=3,也有两个值。还有之前的那个。检查错误中的行号很有用。也许您需要一种新的方法来解决您的问题。据我所知,您正在尝试从三个表中选择TempVehicle、Transfer、RentedVehicle,但从未加入它们。有两个表具有外键fkTempVehicleId,现在我必须通过提供外键来选择任何表中存在的最新记录。如果两个表都没有该id的记录,那么我必须从它自己的表中选择这些记录。@KhurramZulfiqarAli:然后它发送,好像您最好合并单独的结果,以便获得一致的列计数,在内联视图中包装这些记录,并根据您的条件选择适当的数据集。
...
then
(select
case when rent.dategn>tran.dategn then rent.dategn else tran.dategn end dategn,
case when rent.dategn>tran.dategn then rent.fuel else tran.fuel end fuel
from ...