2015-01-08 29 views
0
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; 

它拋出異常Oracle 10g中拋出的異常與相同數量的列

ORA-00913: too many values 
00913. 00000 - "too many values" 
*Cause:  
*Action: 
Error at Line: 6 Column: 2 

我相信我思念的東西與組選擇,但我想幾乎所有的東西。 請幫助和闡述什麼我錯過

回答

2

你的直列選擇(在case語句的一部分)返回兩個值(dategnfuel),其中只有一個是正確的:

... 
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 ... 

一個case只能返回每行單個值(因爲它稱爲每行)。

+0

我刪除了這一行 , 的情況下rent.dategn> tran.dategn then rent.fuel else tran.fuel end fuel。同樣的錯誤 –

+0

@KhurramZulfiqarAli - 您的最終選擇,'(從「TempVehicle」選擇「CreatedOn」dategn,「InitialFuel」燃料,其中「pkTempVehicleId」= 3)'也有兩個值。那之前的那個。檢查你得到的錯誤中的行號是很有用的。也許你需要一個新的方法來解決你的問題。 –

+0

據我所知,您正嘗試從三個表格(TempVehicle,Transfer,RentedVehicle)中選擇而不需要加入它們。 – davek