我正在使用以下代码创建表,我没有太多的列,但仍然收到错误

Create table corrYear as
Select  a.Symbol ASymbol,b.Symbol BSymbol, corr(a.logp,b.logp) Correlation
From logprofitDEC a join logprofitDEC b
on a.Tdate=b.Tdate
where a.Symbol>b.symbol
And  a.symbol in (select asymbol,bsymbol from pairDec1st2nd)
And  b.symbol in (select asymbol,bsymbol from pairDec1st2nd)
And To_date(a.Tdate,'YYYYMMDD') between  DATE'2013-01-01' AND DATE'2013-12-31'
And To_date(a.Tdate,'YYYYMMDD') between  DATE'2013-01-01' AND DATE'2013-12-31'
group by a.symbol,b.Symbol;


错误是

00913.00000-"too many values"


我不知道为什么,通常这是由太多列引起的。请问该怎么办?

最佳答案

我的猜测是正是这些行引起了错误:

And  a.symbol in (select asymbol,bsymbol from pairDec1st2nd)
And  b.symbol in (select asymbol,bsymbol from pairDec1st2nd)


在这两种情况下,子选择都返回两列,其中应该只有一列,如下所示:

And a.symbol in (select asymbol from pairDec1st2nd)
And b.symbol in (select bsymbol from pairDec1st2nd)


如果我没记错的话,Oracle会在IN谓词中允许多个列,如下所示:

And (a.symbol, b.symbol) in (select asymbol,bsymbol from pairDec1st2nd)


尽管我不确定最后一个。

10-07 19:10
查看更多