甲骨文。将sum()与子查询相乘。

时间:2016-06-12 21:06:35

标签: sql oracle

为什么此查询不起作用?我收到错误“不是单组组功能”。

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));

1 个答案:

答案 0 :(得分:2)

加入表,因为要用于聚合的列来自不同的表。有问题的查询在语法上是不正确的。

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