请教sql语句

wangrenda 2004-12-15 01:17:03
表结构如下
O_id(订单号) O_date(出单日期) PJ_ID(货物编号) Num_a(订购数量) Num_b(库存数量)
XS001 2004-2-15 PJ001 5 10 注:可供货数量 5
XS001 2004-2-15 PJ002 100 20 注:可供货数量 20
XS002 2004-5-6 PJ001 20 100
-------------------------------------------------------------------------

计算公式如下:

单个订单算法:
货物编号 订购数量 可供货数量 供货率
1# A B C1=(B÷A)×100%
2# C2
3# C3
4# C4
n# Cn
该订单总供货率 C=(C1+C2+C3+C4+Cn)÷n×100%

其中:可供货数量:
如果库存数<=订购数,则:可供货数量=库存数量;
如果库存数>=订购数,则:可供货数量=订购数量 .
见表结构中的例子
--------------------------------------------------------------------------------------
求两个结果集:
1) 要求可根据订单号统计每个订单的供货率
2) 月平均供货率统计:
月平均供货率=(当月每张订单的供货率的总合÷订单数量)×100%

...全文
79 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
子陌红尘 2004-12-15
  • 打赏
  • 举报
回复
1)
select O_id,
sum(case
when (Num_b/Num_a) < 1.0 then (cast(Num_b as numeric(10,2))/Num_a)
else 1.0 end)/count(*) as 供货率
from 表名
group by O_id

2)
select convert(O_date,varchar(7),120) as 月份,
sum(case
when (Num_b/Num_a) < 1.0 then (cast(Num_b as numeric(10,2))/Num_a)
else 1.0 end)/count(*) as 月平均供货率
from 表名
group by convert(O_date,varchar(7),120)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧