S050114001 2.30  4.50        A4纸      
S050114001 2.30  4.50        NULL
小计       2.30  4.50        NULL
S050114002 1.90  3.50      16K       
S050114002 1.90  3.50      NULL
小计       1.90  3.50       NULL
合计       4.20  8.00       NULL
你不要那行?

解决方案 »

  1.   

    S050114001 2.30  4.50        NULLS050114002 1.90  3.50      NULL
    这两行都不要!
      

  2.   

    S050114001 2.30 4.50 A4纸      
    S050114001 2.30 4.50 NULL      //  ----   这行不要
    小计       2.30 4.50 NULL
    S050114002 1.90 3.50 16K       
    S050114002 1.90 3.50 NULL      //  ----  这行不要
    小计       1.90 3.50 NULL
    合计       4.20 8.00 NULL每张单据多了一行数据!
      

  3.   

    where a.sName is not null --加这个
      

  4.   


    你把这个中的 id 去掉 "group by bill_no, id, sName" ,还有前面的Grouping(id) = 1 也都去掉,这不是多余吗,id 本来就是唯一的啊,你分什么组,要是有id,那么分组后的总记录数目应该就是你的记录数目的三倍加一了.
      

  5.   

    to 猪油果:问题是表C中的记录不止一条(相对于同一个Bill_No来说!)如果不按Id来分组,出来的只有一条记录!不信,你在C表中再增加记录看看!
      

  6.   

    to 631799(杭州工人):
      你自己试试看!我试了一下不行!结果:S050114001 2.30 4.50 A4纸      
    S050114001 2.30 4.50 NULL
    S050114001 2.30 5.50 A4纸      
    S050114001 2.30 5.50 NULL
    小计       4.60 10.00 NULL
    S050114002 1.90 3.50 16K       
    S050114002 1.90 3.50 NULL
    S050114002 1.90 6.50 16K       
    S050114002 1.90 6.50 NULL
    小计       3.80 10.00 NULL
    合计       8.40 20.00 NULL
      

  7.   


    再说了,你统计的是最大值,C表的ID是唯一的,你还分组,有意义吗?你是不是想按b表的ID分组呀?
      

  8.   

    S050114001 2.30 4.50 A4纸      
    S050114001 2.30 5.50 A4纸      
    小计       4.60 10.00 NULL
    S050114002 1.90 3.50 16K       
    S050114002 1.90 6.50 16K       
    小计       3.80 10.00 NULL
    合计       8.40 20.00 NULL这个是我想要的结果,你看该怎么写?
      

  9.   


    Select 
    case when grouping(bill_no) = 1  and Grouping(id) = 1  then '合计' 
    when grouping(id) = 1  then '小计'
    else Max(bill_no) end Bill_No, case when grouping(bill_no) = 1  and Grouping(id) = 1  then Sum(Value1) 
    when grouping(id) = 1  then Sum(Value1) 
    else Max(Value1) end Value1, case when grouping(bill_no) = 1  and Grouping(id) = 1  then Sum(Value2) 
    when grouping(id) = 1  then Sum(Value2) 
    else Max(Value2) end Value2,

    case when grouping(bill_no) = 1  and Grouping(id) = 1  then null
    when grouping(id) = 1  then null
    else Max(sName) end sName
    from 
    (select *, (Select sName from a where sCode = 
    (Select sCode from b where Bill_no = Bill.Bill_No)
    ) as sName
    from 
    c bill
    ) bill group by bill_no, id
    with rollup我已经自己解决啦!
    哈哈
    上面是正确!