ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL

SQL

原创 Linux操作系统 作者:e_soft 时间:2009-04-18 17:13:49 0 删除 编辑

送货单表     subsheet     包含字段  subsheetid ,sheeto .
送货单明细表既对应每种产品的采购金额 orderlist       包含字段  orderlistid  , subsheetid ,productname ,fee
subsheet
subsheet 表记录如下送货单编号由当前年+当前月份+当前日+四位随机号组成
subsheetid    sheetno
34321           200901010001
35142           200901030008
32574           200902051115
32147           200902031245
35844           200901064578
35897           200903077856
35187           200904077856

orderlist表记录如下
orderlistid     subsheetid    productname                  fee
14512            34321           sdh                       10
14513            34321           sdh设备                   20
14538            34321           wlan                      5
15243            32574            phs                      9
48531            32574            phs无线上网卡            5
15478            32574            DDF                      6
15789            35897            MDF                      8
12445            35187            phs                      3
要求统计出当月和当年每种产品的采购金额,其中产品名称类似sdh和sdh设备,phs和phs无线上网卡的进行统计的时候要汇总为sdh 和phs产品的采购金额,也就是说sdh设备的金额要汇总到sdh,phs无线上网卡要汇总到phs,产品名称都为已知,如统计出二月份每种产品的采购金额统计结果如下
产品名称 当月采购金额  当年采购金额
sdh      0               30
wlan     0               5
phs      14              14
DDF      6               6
MDF      0               8

单独统计的SQL如下

当月 phs采购金额
select sum(fee)
from subsheet,orderlist
where subsheet.subsheetid=orderlist.subsheetid
and subsheet.sheetno like '200902%'
and orderlist.productname like '%phs%'
结果为14

当年 phs采购金额

select sum(fee)
from subsheet,orderlist
where subsheet.subsheetid=orderlist.subsheetid
and subsheet.sheetno like '2009%'
and orderlist.productname like '%phs%'
结果为13

请教下如何利用一个SQL检索出这些产品的统计结果,谢谢

 

求2月份数据:

select (CASE WHEN o.productname like '%phs%' THEN 'phs'
             WHEN o.productname like '%sdh%' THEN 'sdh'
             ELSE o.productname
        END) AS productname
       ,sum(CASE WHEN s.sheetno LIKE '200902%' THEN fee END) AS this_month
       ,sum(fee) AS this_year
  from subsheet s,orderlist o
where s.subsheetid=o.subsheetid
       AND s.sheetno >= '200901' AND s.sheetno < '200903'
GROUP BY (CASE WHEN o.productname like '%phs%' THEN 'phs'
                WHEN o.productname like '%sdh%' THEN 'sdh'
                ELSE o.productname
           END);

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21220558/viewspace-590893/,如需转载,请注明出处,否则将追究法律责任。

下一篇: sql
请登录后发表评论 登录
全部评论

注册时间:2009-03-26

  • 博文量
    28
  • 访问量
    24200