select CONVERT(varchar(10),b.createDate,120) as createDate, a.id,a.goods_name,a.goods_pku,pp.catname,s.site_name,
sc.cname,a.goods_url,gpi.goods_img_small,gpi.goods_img_big,
b.goods_price_change,b.goods_price
from goods_products a 
left join goods_price_history_2011_09 b on a.id=b.goods_id 
left join goods_pp pp on pp.id=a.goods_ppid 
left join site s on a.siteid=s.id 
left join site_category sc on sc.id=a.goods_site_catid 
left join goods_products_info gpi on gpi.goodsid=a.id 
group by a.id,a.goods_name,a.goods_pku,pp.catname,s.site_name,sc.cname,a.goods_url,gpi.goods_img_small,gpi.goods_img_big, createDate,b.goods_price_change,b.goods_price 
having createDate >='2011-09-01' and createDate<='2011-09-21' and a.id=96944 and b.goods_price_change >0 order by id desc
go
这条语句的结果:
   create     id      goods_name            goods_pku         catname    site_name    cname     
1 2011-09-13  96944   索尼彩电KDL-60NX810                      彩电       苏宁易购    3D电视    
2 2011-09-15  96944   索尼彩电KDL-60NX810                      彩电       苏宁易购    3D电视
goods_price_change   goods_price
5000                   34499
5000                   34499
如何取出create为2011-09-15的一条数据

解决方案 »

  1.   

    看不清,不知道对不对select TOP 1 CONVERT(varchar(10),b.createDate,120) as createDate, a.id,a.goods_name,a.goods_pku,pp.catname,s.site_name,
    sc.cname,a.goods_url,gpi.goods_img_small,gpi.goods_img_big,
    b.goods_price_change,b.goods_price
    from goods_products a  
    left join goods_price_history_2011_09 b on a.id=b.goods_id  
    left join goods_pp pp on pp.id=a.goods_ppid  
    left join site s on a.siteid=s.id  
    left join site_category sc on sc.id=a.goods_site_catid  
    left join goods_products_info gpi on gpi.goodsid=a.id  
    group by a.id,a.goods_name,a.goods_pku,pp.catname,s.site_name,sc.cname,a.goods_url,gpi.goods_img_small,gpi.goods_img_big, createDate,b.goods_price_change,b.goods_price  
    having createDate >='2011-09-01' and createDate<='2011-09-21' and a.id=96944 and b.goods_price_change >0 order by createDate desc
    go
      

  2.   

    select * from tb t where create=(select max(create) from tb where  goods_name=t. goods_name )
      

  3.   

    --结果插入临时表#TSELECT *FROM #T T
    WHERE NOT EXISTS(SELECT 1 FROM #T WHERE id=T.id AND TIME>T.TIME)
      

  4.   

    --having 是用于聚合函数取值条件的,你没用聚合函数,最好不要用having.
    select CONVERT(varchar(10),b.createDate,120) as createDate, a.id,a.goods_name,a.goods_pku,pp.catname,s.site_name,
    sc.cname,a.goods_url,gpi.goods_img_small,gpi.goods_img_big,
    b.goods_price_change,b.goods_price
    from goods_products a  
    left join goods_price_history_2011_09 b on a.id=b.goods_id  
    left join goods_pp pp on pp.id=a.goods_ppid  
    left join site s on a.siteid=s.id  
    left join site_category sc on sc.id=a.goods_site_catid  
    left join goods_products_info gpi on gpi.goodsid=a.id 
    where CONVERT(varchar(10),b.createDate,120) ='2011-09-15' and a.id=96944 and b.goods_price_change >0  
    group by a.id,a.goods_name,a.goods_pku,pp.catname,s.site_name,sc.cname,a.goods_url,gpi.goods_img_small,gpi.goods_img_big, createDate,b.goods_price_change,b.goods_price  
    order by id desc
    go
      

  5.   

    对了!
    你group 干嘛了?你的查询里出没用聚合啊!
    --having 是用于聚合函数取值条件的,你没用聚合函数,最好不要用having.
    select CONVERT(varchar(10),b.createDate,120) as createDate, a.id,a.goods_name,a.goods_pku,pp.catname,s.site_name,
    sc.cname,a.goods_url,gpi.goods_img_small,gpi.goods_img_big,b.goods_price_change,b.goods_price
    from goods_products a  
    left join goods_price_history_2011_09 b on a.id=b.goods_id  
    left join goods_pp pp on pp.id=a.goods_ppid  
    left join site s on a.siteid=s.id  
    left join site_category sc on sc.id=a.goods_site_catid  
    left join goods_products_info gpi on gpi.goodsid=a.id 
    where CONVERT(varchar(10),b.createDate,120) ='2011-09-15' and a.id=96944 and b.goods_price_change >0  
    gorder by id desc
    go
      

  6.   

    查询对象中没用聚合,就不要用group by,条件中没有聚合,就不要用having
      

  7.   

    --晴天大大太耐心了,代码那么长实在没兴趣看
    --要我回答,就他的查询语句丢到cte里,然后:
    select * from cte a where not exists(
    select 1 from cte where id=a.id and create>a.create
    )
      

  8.   

    参考:
    http://www.cnblogs.com/insus/articles/1935853.html