select b.* from DutyInfo b
,
(select  MAX(a.DutyDate) DutyDate,sign as sign 
from DutyInfo a group by a.sign) a 
where b.DutyDate=a.DutyDate and b.DutyDate<'20130601'
order by b.DutyDate以下是我数据库的数据,但是执行 不显示数据  去掉  and b.DutyDate<'20130601'  这个条件就有显示
是不是条件加错了  如果加错了该怎么加呢?
20130514 星期二 张三 1
20130515 星期三 李四 1
20130516 星期四 王五 1
20130517 星期五 赵六 1
20130518 星期六 张三 2
20130519 星期日 李四 2
20130520 星期一 张三 1
20130521 星期二 李四 1
20130522 星期三 王五 1
20130523 星期四 赵六 1
20130524 星期五 张三 1
20130525 星期六 王五 2
20130526 星期日 赵六 2
20130527 星期一 李四 1
20130528 星期二 王五 1
20130529 星期三 赵六 1
20130530 星期四 张三 1
20130531 星期五 李四 1SQL数据库select

解决方案 »

  1.   

     b.DutyDate<'20130601' 改  CONVERT(varchar(100),b.DutyDate, 112)<'20130601'
      

  2.   

    b.DutyDate 是非日期的吧
    看看前后是否有其它特殊的字符
    导致的
      

  3.   

    DUTYDATE  类型你好像搞错了把
      

  4.   

    我定义的时候就是定义int类型的  
      

  5.   

    你加上的条件这里明显是字符串,and b.DutyDate<'20130601'  ,但是你又定义了int。类型不一样,如果不能直接隐式转换的话,就会当没找到匹配的值。
      

  6.   


    DECLARE @date int
    SET @date ='20130601'
    select b.* from DutyInfo b
    ,
    (select  MAX(a.DutyDate) DutyDate,sign as sign 
    from DutyInfo a group by a.sign) a 
    where b.DutyDate=a.DutyDate and b.DutyDate<@date
    order by b.DutyDate如果我这样写呢?
      

  7.   


    DECLARE @date int
    SET @date ='20130601'
    select b.* from DutyInfo b
    ,
    (select  MAX(a.DutyDate) DutyDate,sign as sign 
    from DutyInfo a group by a.sign) a 
    where b.DutyDate=a.DutyDate and b.DutyDate<@date
    order by b.DutyDate如果我这样写呢?虽然你定义了int,但是你赋值的时候使用了一个字符型,所以这个值还是会变成字符型
      

  8.   

    我实验了好几次  我发现似乎不是我插入字符串类型的问题而是我插入这个条件的问题   我如果把插入的b.DutyDate<'20130601'   这个值设在最后一个数据则正常显示   只要我把这个值设在我数据的中间某一个就不显示数据了
      

  9.   


    就比如我的数据是20130514-20130531   如果我把条件设成and b.DutyDate<'20130601' 则一切正常
    但是只要把条件设置成20130514-20130531中间的某个数就不显示数据了
      

  10.   

    恩 我知道  只是我前期已经这样做了  如果要是全部改成datetime类型就要全部改  所以等这个做完我再设置成datetime做一下看看
      

  11.   


    当时为了循环的时候方便i++  后来发现其实也可以用dt.adddays(1)来的···呵呵  我再建个数据库试一试用datetime类型的看看  谢谢你啦
      

  12.   


    当时为了循环的时候方便i++  后来发现其实也可以用dt.adddays(1)来的···呵呵  我再建个数据库试一试用datetime类型的看看  谢谢你啦如果是i++,那你传入的参数也不应该是'20130514'这样的格式啊?SQLServer 直接有dateadd()这个的
      

  13.   


    当时为了循环的时候方便i++  后来发现其实也可以用dt.adddays(1)来的···呵呵  我再建个数据库试一试用datetime类型的看看  谢谢你啦如果是i++,那你传入的参数也不应该是'20130514'这样的格式啊?SQLServer 直接有dateadd()这个的我是在程序里面把datetime先转换string在转换int 然后就直接++了  当时就图这个方便 
    我就是平时看看书然后自己写写玩玩,有时就逛逛论坛,  所以很多简单的方法不会用  只会用最原始和最笨的  呵呵
      

  14.   

    学习  处理时间有datetime