送货单表 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博客 ” ,链接:https://blog.itpub.net/21220558/viewspace-590893/ ,如需转载,请注明出处,否则将追究法律责任。