select count( distinct imsi) from(
 select *,rank() over (partition by Imsi order by MTime desc) idx from OutDesc7Day_20120117 with(nolock) where MTime<'2012-01-17 13:00'
 )t left join TourProvinceCity c  
 on convert(varchar(20),t .VlrNum) = c.VlrNum  
 where idx=1  and  left( convert(varchar(20),t.VlrNum),5) in('19861')
 
 select count( distinct imsi) from(
 select *,rank() over (partition by Imsi order by MTime desc) idx from OutDesc7Day_20120117 with(nolock) where MTime<'2012-01-17 13:00'
 )t left join TourProvinceCity c  
 on convert(varchar(20),t .VlrNum) = c.VlrNum  
 where idx=1 and City<>'广州' and  left( convert(varchar(20),t.VlrNum),5) in('19861')
 
  select count( distinct imsi) from(
 select *,rank() over (partition by Imsi order by MTime desc) idx from OutDesc7Day_20120117 with(nolock) where MTime<'2012-01-17 13:00'
 )t left join TourProvinceCity c  
 on convert(varchar(20),t .VlrNum) = c.VlrNum  
 where idx=1 and City='广州' and  left( convert(varchar(20),t.VlrNum),5) in('19861')得出的结果分别是:72540,72329,0
竟然没有等于广州的数据,那么 City<>'广州' 与 没有这个条件应该是一致才对,但是结果却不是。
这是bug 吗?

解决方案 »

  1.   

    可能city有null这个条件改一下
    isnull(City,'')<>'广州'
      

  2.   

    除非你的City列不空,这怎么是bug呢?
     City<>'广州' 你这个条件肯定取不出City为null的值呀,另一个你更取不出来
      

  3.   

    的确是 null 的问题。
    City<>'广州' 就 去掉了 null 的情况啦?
      

  4.   

    楼主,你哪来的IMSI?不是运营商你保留用户IMSI信息不怕法律风险?
      

  5.   

    应该是有null值的问题,过滤掉
    isnull(city,'')<>'广州'
      

  6.   

    where City is not null --可以把null的都去掉再比较