2016-06-12 368 views
0

爲什麼此查詢不起作用?我收到錯誤「不是單組功能」。Oracle。將sum()與子查詢相乘。

select sum(stock.stkprice) * (select nation.exchrate from nation where nation.natcode = 'UK') from stock; 

是否因爲子查詢可能會返回多個值?它使用主鍵natcode,所以它只應該返回一個單一的匯率。下面是表格。

create table nation 
(natcode char(3) not null, 
natname char(20), 
exchrate number(9,5), 
constraint pk_nation primary key (natcode)); 

create table stock 
(stkcode char(3) not null, 
stkfirm char(20), 
stkprice number(6,2), 
stkqty number(8), 
stkdiv number(5,2), 
stkpe number(5), 
natcode char(3), 
constraint pk_stock primary key (stkcode), 
constraint fk_hasnation foreign key (natcode) references nation(natcode)); 

回答

2

加入表格,因爲要用於聚合的列來自不同的表格。有問題的查詢在語法上不正確。

select sum(stock.stkprice * nation.exchrate) 
from nation 
join stock on stock.natcode=nation.natcode 
where nation.natcode = 'UK'