0

ステートメント1:

create table tmp as  select code  , round((max(close)-min(close))/min(close),2) as volatility,
    case  when  (max(close)-min(close))/min(close) <0.1  then  "grade1" 
    when  (max(close)-min(close))/min(close)       <0.2  then  "grade2"
    when  (max(close)-min(close))/min(close)       <0.3  then  "grade3"
    else "grade4"  end  as  type
    from  quote  where date between '20120801' and '20121101' and code<'07000'  
    group by code order by volatility ;

ステートメント2:

select  tmp.code,profile.name, tmp.volatility from tmp,profile where tmp.code=profile.code;

ステートメント1とステートメント2は実行できますが、2つを1つに組み合わせると、ステートメント3は実行できません、どうしたのですか?

ステートメント3:

 select quote.code ,profile.name, round((max(quote.close)-min(quote.close))/min(quote.close),2) as quote.volatility,
    case  when  (max(quote.close)-min(quote.close))/min(quote.close) <0.1  then  "grade1" 
    when  (max(quote.close)-min(quote.close))/min(quote.close)       <0.2  then  "grade2"
    when  (max(quote.close)-min(quote.close))/min(quote.close)       <0.3  then  "grade3"
    else "grade4"  end  as  quote.type
    from  quote,profile where quote.date between '20120801' and '20121101' and quote.code<'07000' and quote.code=profile.code
    group by quote.code order by quote.volatility ;
4

1 に答える 1

0

最初のステートメントをサブクエリにするだけです。

select tmp.code, profile.name, tmp.volatility
from (select code,
             round(...) as volatility,
             case ... end as type
      from quote
      where date between '20120801' and '20121101'
        and code<'07000'
      group by code
      order by volatility) as tmp,
     profile
where tmp.code = profile.code;
于 2012-11-10T12:09:39.880 に答える