提货单号         提货时间             提货企业
207065215 2007-1-4 14:51     8495
207065216 2007-1-4 14:51     8495
207065217 2007-1-4 14:51     8495
207065218 2007-1-4 14:51     8495
105021318 2005-1-30 16:45     8495
105021319 2005-1-30 16:45     8495
105041163 2005-1-27 12:58     8495
105041788 2005-1-30 10:56     8495
107023694 2007-3-21 15:53     8495
207085488 2007-3-21 11:48     8495
207085449 2007-2-21 11:01     8495
207085450 2007-2-21 11:01     8495
207085452 2007-2-21 11:01     8495我要统计出的结果为提货企业         年份      一月   二月   三月   四月......  十二月8495           2007      4     0     5     0           0
8495           2006      0     0     0     0           0
8495           2005      4     0     0     0           0
请问各位大哥, 我用DELPHI .用DBGRID 控件.如何才能得出这样的效果呢??  如果不用DELPHI . 直接用SQL语句.
我要怎么写,才能够  动态 统计. 每一月究竟有多少提货单数...动态:是指截止到目前己录到系统中的单号.

解决方案 »

  1.   


    应该类似这样,你调试一下select 提货企业,YEAR(提货时间),
    sum(case when month(提货时间) = 1 then 1 else 0 end) 一月,
    sum(case when month(提货时间) = 2 then 1 else 0 end) 二月,
    ....
    sum(case when month(提货时间) = 12 then 1 else 0 end) 十二月
    from t 
    group by 提货企业,YEAR(提货时间)
      

  2.   

    能请问一下楼上。这个 then 1 else 0 end  是起什么作用的呀?
      

  3.   

    楼上,请问一下:我现在用ACCESS 能够得出我上面的结果。但SQL中如何能得出这样的结果呢? TRANSFORM Count(a.提货单号) AS 提货单号之计数
    SELECT a.提货企业, Format([提货时间],"yyyy") AS 表达式1, Count(a.提货单号) AS [总计 提货单号]
    FROM a
    GROUP BY a.提货企业, Format([提货时间],"yyyy")
    PIVOT Format([提货时间],"oooo") In ("一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月");
      

  4.   

    access中case when 可以使用iif来实现
      

  5.   

    请问一下.用SQL 怎么写啊? 哪位来帮一下手呀
      

  6.   

    一楼回复的不就是SQL语句吗?
      

  7.   

    一楼的这个语句。运行的时候。提示查询设计器不支持CASE 语句。 这个怎么改呀?