关键字表:keyword
       字段:编号KEYID 关键字KEYWORD
   竞价表: vieprice
       字段:编号VIEID 关键字编号KEYID(与KEYWORD表中的KEYID关联) 竞价时间VIEPRICE(DATE类型) 竞价价格VIEPRICE
            
   keyword表与vieprice表是一对多关系   要求:查出关键字(条件为KEYWORD LIKE '%JBOS%')和与之相对应的竞价记录,竞价记录的条件是:竞价价格=本月最高竞价价格
         ;如果关键字本月无竟价记录,要求关键字记录也要查询出来,竞价记录可以为空
      

解决方案 »

  1.   

    试试...
    select a.keyid,to_char(b.vietime,'yyyy-mm'),max(b.vieprice) from keyword a
    left join vieprice b on a.keyid=b.keyid
    where KEYWORD   LIKE   '%JBOS%'
    group by a.keyid,to_char(b.vietime,'yyyy-mm')
      

  2.   

    --sql server 写法.
    select m.* , n.* from keyword m ,
    (select t.* from vieprice t month(竞价时间) = month(getdate()) and where 竞价价格 = (select max(竞价价格) from vieprice where KEYID = t.KEYID and month(竞价时间) = month(getdate()))) n
    where m.KEYWORD LIKE '%JBOS%' and m.KEYID = n.KEYID
      

  3.   

    --ORACLE写法
    select m.* , n.* from keyword m ,
    (select t.* from vieprice t where to_char(竞价时间,'yyyy-mm') = to_char(sysdate,'yyyy-mm') and 竞价价格 = (select max(竞价价格) from vieprice where KEYID = t.KEYID and to_char(竞价时间,'yyyy-mm') = to_char(sysdate,'yyyy-mm'))) n
    where m.KEYWORD LIKE '%JBOS%' and m.KEYID = n.KEYID
     --sql server 写法.
    select m.* , n.* from keyword m ,
    (select t.* from vieprice t where month(竞价时间) = month(getdate()) and 竞价价格 = (select max(竞价价格) from vieprice where KEYID = t.KEYID and month(竞价时间) = month(getdate()))) n
    where m.KEYWORD LIKE '%JBOS%' and m.KEYID = n.KEYID
      

  4.   

    to:dawugui 
    你这个不能查询没有竞价记录的关键字的?