是不是下面这个:
select 品名,加工厂簡稱,sum(入數數量) as 累計數量
   from table
   where datepart(yyyy,完工收回日期)=2001
   group by 品名,加工厂簡稱

解决方案 »

  1.   

    上面的句子好象是错误的,GROUP BY 不能跟两个字段吧?
      

  2.   

    group by 为何不能跟两个字段?
      

  3.   


    可写为:
    select 品名,datepart(yyyy,完工收回日期),加工厂簡稱,sum(入數數量) as 累計數量
      from a
      group by 品名,datepart(yyyy,完工收回日期),加工厂簡稱;完成逐年统计
      

  4.   

    to 青争岁月:
    group by 可跟多个字段,但 select 中只能为分组字段和聚合运算字段:如sum(入數數量)、
    avg(入數數量)、count( distinct 品名 )下面sql便错了:
    select 品名,datepart(yyyy,完工收回日期),加工厂簡稱,sum(入數數量) as 累計數量
      from a
      group by 品名加工厂簡稱;
      

  5.   

    select 加工厂簡稱,品名,sum(入數數量) as 累計數量
      from table
      where 完工收回日期 between to_date('20010101','yyyymmdd') and to_date('20020101','yyyymmdd')
      group by 加工厂簡稱,品名
      

  6.   

    whaisheng的句子我不能保证正确
    我以 MS SQL 的 pubs 库 sales 表为例写个相同功能的句子(已经试过)
    楼上的兄弟可以试试:
     
    select datepart(yyyy,ord_date),count(distinct title_id),sum(qyt),stor_id
     from sales
    group by datepart(yyyy,ord_date),stor_id ;
      

  7.   

    在輸入時沒有累計數量
    但在統計時我要按以下列式列出:品名  完工收回日期 入庫憑証號 入數數量 加工厂簡稱 累計數量
    bb    2001/1/1    xxxx      30      cc      30
    bb    2001/3/1    uuuu      50      cc      80
    bb    2001/6/6    iiii      10      yy      10
    bb    2001/6/8    pppp      20      yy      30
    各位再想想辦法.
      

  8.   

    鉴于表中已经有了统计的数量,可做如下过程:
    CREATE PROCEDURE BBB
    @DAT CHAR(10),
    @PINM CHAR(20),
    @JGCJC CHAR(20)
    AS
    BEGIN
    DECLARE @TMEPINT INT
    DECLARE @MAX     INT
    DECLARE AAA CURSOR AS
    SELECT 累计数量 FROM A 
    WHERE CAST(YEAR(完工收回日期)AS CHAR(10))=@DAT AND 品名=@PINM 
    AND 加工厂简称=@JGCJC
    OPEN AAA
    FETCH NEXT FROM AAA INTO @TEMPINT
    SELECT @MAX=@TEMPINT
    WHILE @@FETCH_STATUS=0
    BEGIN
    IF @MAX<@TEMPINT
    BEGIN
    SELECT @MAX=@TEMPINT
    FETCH NEXT FROM AAA INTO @TEMPINT
    ELSE
    FETCH NEXT FROM AAA INTO @TEMPINT
    END
    SELECT * INTO FROM A WHERE 累计数量=@MAX
    END
      

  9.   

    to 李寻欢:
    sheng的表中无"累计数量"字段,"累计数量"只是"入数数量"的特定条件计算列如果要得到如此结果可以实现:
    品名  完工收回日期 入庫憑証號 入數數量 加工厂簡稱 累計數量
    bb    2001/1/1    xxxx      30      cc      30    110
    bb    2001/3/1    uuuu      50      cc      80    110
    bb    2001/6/6    iiii      10      yy      10    110
    bb    2001/6/8    pppp      20      yy      30    110
     
    rows 4品名  完工收回日期 入庫憑証號 入數數量 加工厂簡稱 累計數量
    aa    2001/1/3    xxxx      30      cc      10    50
    aa    2001/2/1    uuuu      50      cc      40    50rows 2但如:
    品名  完工收回日期 入庫憑証號 入數數量 加工厂簡稱 累計數量
    bb    2001/1/1    xxxx      30      cc      30    110
    bb    2001/3/1    uuuu      50      cc      80    110
    bb    2001/6/6    iiii      10      yy      10    110
    bb    2001/6/8    pppp      20      yy      30    110
    aa    2001/1/3    xxxx      30      cc      10    50
    aa    2001/2/1    uuuu      50      cc      40    50rows 6 
    我认为不可实现,你可问问三千,竹之草等大虾
      

  10.   

    原表是這樣:
    品名  完工收回日期 入庫憑証號 入數數量 加工厂簡稱 
    bb    2001/1/1      xxxx       30      cc      
    bb    2001/3/1      uuuu       50      cc      
    bb    2001/6/6      iiii       10      yy      
    bb    2001/6/8      pppp       20      yy      
    我要的是這樣統計:
    品名  完工收回日期 入庫憑証號 入數數量 加工厂簡稱 累計數量
    bb    2001/1/1      xxxx      30      cc        30
    bb    2001/3/1      uuuu      50      cc        80
    bb    2001/4/1      uuuu      50      cc        130
    bb    2001/6/6      iiii      10      yy        10
    bb    2001/6/8      pppp      20      yy        30
      
    "累計數量"分別各個加工厂 品名逐累計﹐始于本年度初﹐止于本年度末。
      

  11.   

    用个临时表吧,看http://www.csdn.net/Expert/topic/395/395740.shtm
    和你的问题基本一样!
      

  12.   

    这种需求我原来作过
    我通过触发器实现的
    表结构为:品名  完工收回日期 入庫憑証號 入數數量 加工厂簡稱 累計數量
    做一个插入触发器
    插入数据为: 1) bb    2001/1/1      xxxx      30      cc        0
    将 30+0 写入累計數量,通过 bb,cc,2001为where条件实现控制逐年累计  
               2) bb    2001/3/1      uuuu      50      cc        0
    将 50+30 写入累計數量,通过 bb,cc,2001为where条件实现控制逐年累计 其中 0,30为插入时最大时间的 累計數量列值
      

  13.   

    to:行者
    如果用触發器,
    品名  完工收回日期 入庫憑証號 入數數量 加工厂簡稱 累計數量
    bb    2001/1/1      xxxx      30      cc        30
    bb    2001/3/1      uuuu      50      cc        80
    bb    2001/4/1      uuuu      50      cc        130
    bb    2001/6/6      iiii      10      yy        10
    bb    2001/6/8      pppp      20      yy        30
    如果把2001/3/1的50修改為100,那2001/4/1的累計數量130又要修改為180,要是數据量很大這樣處理速度會很慢