2012-11-10 77 views
0

聲明1:無法將兩個語句合併到一個sqlite中?

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可以運行,當我兩個組合成一個--the聲明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 ; 

回答

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;