select top 1 * from 表 where 进货日期<'2005-3-29'

解决方案 »

  1.   

    select top 1 * from 表 where 进货日期<'2005-3-29' 
    order by 进货日期 desc
      

  2.   


    declare @a table(产品号 nvarchar(20),供应商 nvarchar(20),进货日期 datetime)
    insert @a(产品号,供应商,进货日期)
    values('100021','南京','2004-9-21')
    insert @a(产品号,供应商,进货日期)
    values('100021','上海','2005-1-29')
    insert @a(产品号,供应商,进货日期)
    values('100021','北京','2005-2-18')
    insert @a(产品号,供应商,进货日期)
    values('100021','广州','2005-3-27')
    insert @a(产品号,供应商,进货日期)
    values('100021','西安','2005-4-1')select * from @adeclare @time datetime
    set @time='2005-3-29'
    select  top 1 * from @a where 进货日期<@time order by 进货日期 descset @time='2005-2-9'
    select  top 1 * from @a where 进货日期<@time order by 进货日期 desc
      

  3.   

    --可以
    select top 1 * from 表 where 进货日期<'2005-3-29' 
    order by 进货日期 desc
      

  4.   

    declare @date datetime
    set @date = cast('2005-3-29' as datetime)select 
        top 1 * 
    from 
        表 
    where 
        进货日期< @date 
    order by 
        进货日期 desc
      

  5.   

    谢谢楼上所有的,但又有新问题:
    我如果加上top 1,就出错:未找到预期 FROM 关键字
    怎么回事啊,谢谢了
      

  6.   

    --也可以不用topselect * from 表 a where 进货日期<'2005-3-29' and not exists(select * from 表 whee 进货日期>a.进货日期)
    --或者:
    select * from 表 a where 进货日期=(select max(进货日期) from 表 whee 进货日期<'2005-3-29')
      

  7.   

    select top 1 * from 表 where 进货日期<'2005-3-29' 
    order by 进货日期 desc这就足够了,不用调存储过程了
      

  8.   

    SELECT TOP 1
    产品号,供应商,进货日期
    FROM WULIU 
    WHERE (产品号='1000055')
    AND (TO_CHAR(进货日期,'YYYY-MM-DD')<'2005-02-23') 
    ORDER BY 进货日期 DESC
      

  9.   

    数据库有问题,楼主不是用的sql server数据库吧? 试试我后面的写法
      

  10.   

    oralce数据库:SELECT 产品号,供应商,进货日期
    FROM WULIU 
    WHERE (产品号='1000055') and rownum=1  
    AND (TO_CHAR(进货日期,'YYYY-MM-DD')<'2005-02-23') 
    ORDER BY 进货日期 DESC