tab表的结构如下:
 公司      单据号  采购类型  采购员    物资名称   数量  
 公司一     002      采购      张三      电脑       10
 公司一     002      采购      张三      打印机      2
 公司三     003      采购      李四      打印纸     20
 公司四     004      采购      王五      电脑       2我想统计后的结果如下:物资名称  采购次数(根据单据号)   物资项数(统计物资)
公司一        1                       2
公司三        1                       1
公司四        1                       1

解决方案 »

  1.   

    SELECT 公司,COUNT(DISTINCT(单据号)) AS 采购次数,COUNT(物资名称) AS 物资项数 
    FROM tab GROUP BY 公司 ORDER BY COUNT(物资名称) DESC
      

  2.   


    create table #Tmp
    (
        cn varchar(50),
        num varchar(50),  
        pname varchar(50)  
    )insert into #Tmp values('aa','001','x')
    insert into #Tmp values('aa','001','y')
    insert into #Tmp values('aa','005','y')
    insert into #Tmp values('bb','002','x')
    insert into #Tmp values('cc','003','x')
    select cn,count(distinct(num)),COUNT(cn) as c
    from #Tmp
    group by cndrop table #Tmp
      

  3.   

    var result = from r in dt_info.AsEnumerable()
                             group r by r.Field<string>(0) into g
                             select new { company = g.Select(R => R.Field<string>(0)), 
                                 C_Count = g.Select(R => R.Field<string>(1)).GroupBy(I => I).Count(), 
                                 c_c = g.Select(R => R.Field<string>(4)).GroupBy(I => I).Count() };