我写了这样一句sql:
Select Count(Distinct(s.Seqid))
  From Salescosttbl s
 Where Trunc(s.Saledate) >= To_Date('2008-10-15', 'yyyy-mm-dd')
   And Trunc(s.Saledate) <= To_Date('2008-10-15', 'yyyy-mm-dd')
此时所计算出的数目为815,
而我修改成一下后却数目却变了:
Select
 s.productlevelid,
 Count(Distinct(s.Seqid))
  From Salescosttbl s
 Where Trunc(s.Saledate) >= To_Date('2008-10-15', 'yyyy-mm-dd')
   And Trunc(s.Saledate) <= To_Date('2008-10-15', 'yyyy-mm-dd')
此时将count函数计算出的数目合计却不是815。
请各路高手帮小弟解疑,谢谢!

解决方案 »

  1.   

    不同的productlevelid内有相同的Seqid就会不同。
      

  2.   

    Select 
    s.productlevelid, 
    Count(Distinct(s.Seqid)) 
      From Salescosttbl s 
    Where Trunc(s.Saledate) >= To_Date('2008-10-15', 'yyyy-mm-dd') 
      And Trunc(s.Saledate) <= To_Date('2008-10-15', 'yyyy-mm-dd') 
    这句运行步报错嘛?要用group by 配合才行
    Select 
    s.productlevelid, 
    Count(Distinct(s.Seqid)) 
      From Salescosttbl s 
    Where Trunc(s.Saledate) >= To_Date('2008-10-15', 'yyyy-mm-dd') 
      And Trunc(s.Saledate) <= To_Date('2008-10-15', 'yyyy-mm-dd') 
    group by s.productlevelid
      

  3.   

    Select 
    s.productlevelid, 
    Count(Distinct(s.Seqid)) 
      From Salescosttbl s 
    Where Trunc(s.Saledate) >= To_Date('2008-10-15', 'yyyy-mm-dd') 
      And Trunc(s.Saledate) <= To_Date('2008-10-15', 'yyyy-mm-dd') 
    你这句没有GROUP BY可以运行?
      

  4.   

    第一句,没有group by 没有其它字段,就统计所有的
    第二句,没有group by 应该是会报错的,加了group by ,是根据s.productlevelid分组统计数量
      

  5.   


    Seqid相同,productlevelid不相同時;結果集會出現不同
      

  6.   

    小弟不明白为什么seqid相同,productlevelid不相同時,会出现结果集不同,请大哥详细指点。
      

  7.   

    你还没搞明白分组统计的概念
    假设数据如下productlevelid  Seqid
      1           1
      1           2
      1           3
      2           1
      2           2
      2           2
      2           3
      2           4你第一语句,是统计全部不重复的seqid,里面共8条纪录,过滤重复的,只余下四条
    执行结果
    Count(Distinct(s.Seqid)) 
       4而第二个语句,是分组统计,按productlevelid分组
    那第一组productlevelid=1,共有3条不重复的seqid
    面=2的,有五条纪录,不重复的有4个
    执行结果
    s.productlevelid   Count(Distinct(s.Seqid))
      1                3
      2                4