本人建有一个SALE 数据库
 
 表1结构数据产品    月份    销售
笔       1       2
纸       1       1
笔       1       5
纸       2       3
纸       2       2
笔       3       2
纸       3       3
笔       3       3当选择时间为3月份, 实现如下查询
产品   本月销售   全年累计销售
 笔       5           12
纸        3           9请大家帮忙用 SELECT 语句如何实现 ,在线等急用

解决方案 »

  1.   

    Select [产品],sum(Case [月份] when 3 then [月份] else null end) As '本月销售',sum([销售])
    From 表1
      

  2.   

    access:
    select 产品,sum (iif(月份=3,销售,0)) as 本月销售,sum(销售) as 全年累计销售 from 表1 group by 产品 order by 产品
    sql2000:
    select 产品,sum (case 月份 when 3 then 销售 else 0 end) as 本月销售,sum(销售) as 全年累计销售 from 表1 group by 产品 order by 产品
      

  3.   

    SELECT b1.产品, 本月销售, 累计
    FROM [select 产品 ,sum(销售) as 累计 FROM SALE  where 月份<=3 group by  产品]. AS b1 RIGHT JOIN [SELECT 产品, 月份,sum(销售) as 本月销售 FROM SALE group by 产品, 月份 having 月份=3]. AS b2 ON b1.产品=b2.产品;
      

  4.   

    谢谢以上各位
    ??还不行啊,存在2个问题1、当我查旬2月份的销售数量时,累计销售数量中把3月份也加进去了。
    2、当月份是用text中选择性的变量,该查询语句出错
      

  5.   

    "select 产品,sum (case 月份 when " & val(text) & " then 销售 else 0 end) as 本月销售,sum(销售) as 全年累计销售 from 表1 group by 产品 order by 产品"
      

  6.   

    理解错你的意思了,你的“全年累计销售”是只累计到本月的。
    修改如下:access:
    select 产品,sum (iif(月份=3,销售,0)) as 本月销售,sum(销售) as 全年累计销售 from 表1 where 月份<=3 group by 产品 order by 产品
    sql2000:
    select 产品,sum (case 月份 when 3 then 销售 else 0 end) as 本月销售,sum(销售) as 全年累计销售 from 表1 where 月份<=3 group by 产品 order by 产品
      

  7.   

    rs1.Open "select acode.acode,acode.aname ,sum(case month when " & Val(Text2.Text) & " then balance.rmbdebit  else 0 end ) as 借方发生额,sum(balance.rmbdebit ) as 借方累计发生额  from balance where month<=" & Val(Text2.Text) & "   from acode inner join balance on acode.acode=balance.acode where (year='" & Trim(Text1.Text) & "')  group by acode.acode,acode.aname  order by acode.acode", conn1, adOpenDynamic, adLockOptimistic
    这条语句本人调试1天了,还是提示FROM 附近有语法错误,
    求解???
      

  8.   

    上面的意思
    balance表中的本月借方发生合计数,本年借方累计额数,与acode表中的aname(汉字代码)连接后
    形成新的查询记录集
      

  9.   

    请教jxgzay(jxgzay)
    表1中增加字段年份,并选择2005
    (case 月份 when 3 and 年份 when 2005 then 销售 else 0 end)
    这样表达该语句是否有误