运费模板表
物流公司 运送到 首重 首费 续重 续费
---------------------------------------------------------------------
中通 江苏,浙江,上海 1 5 1 1
中通 安徽,北京,天津,山东,河南,河北,湖南,湖北,江西,福建,广东 1 8 1 6
中通 黑龙江,吉林,辽宁,山西,陕西,广西,云南,贵州,四川,海南 1 10 1 8
中通 内蒙古,青海,宁夏,甘肃,新疆,西藏 1 10 1 10
顺丰 江苏,浙江,上海 1 12 1 2
顺丰 安徽,北京,天津,山东,河南,河北,湖南,湖北,江西,福建,广东 1 22 1 10
顺丰 黑龙江,吉林,辽宁,山西,陕西,广西,云南,贵州,四川,海南 1 22 1 12
顺丰 内蒙古,青海,宁夏,甘肃,新疆,西藏 1 22 1 18
宅急送 江苏,浙江,上海 1 10 1 1
宅急送 安徽,北京,天津,山东,河南,河北,湖南,湖北,江西,福建,广东 1 16 1 8
宅急送 黑龙江,吉林,辽宁,山西,陕西,广西,云南,贵州,四川,海南 1 18 1 9
宅急送 内蒙古,青海,宁夏,甘肃,新疆,西藏 1 26 1 24出货记录表
编号            运送到  总重量  物流公司  合计费用
121219007 安徽 18.20 中通
121218045 重庆 39.20 中通
121217052 安徽 32.00 顺丰
921219003 山东 33.80 顺丰
121219025 山东 2.30 顺丰
121217002 广西 83.40 顺丰
121219015 北京 4.30 顺丰
921219017 陕西 27.90 顺丰
121219024 浙江 5.10 顺丰
121218037 浙江 1.00 顺丰
121219004 河南 0.20 中通
121218054 福建 1.00 顺丰
121214029 上海 32.90 顺丰
121218012 广西 41.30 顺丰
121214025 上海 0.00 中通
121219028 江苏 5.30 顺丰求出货记录表中合计费用
注:重量计算使用四舍五入:如1.4KG=1KG,1.6KG=2KG物流运费模板计算,SQL

解决方案 »

  1.   


    select a.*,b.首重*b.首费+
    (case when a.总重量>b.首重 then round((a.总重量-b.首重),0)*b.续费/b.续重 
    else 0 end) as 合计费用
    from 出货记录表 a inner join 运费模板表 b 
    on a.物流公司=b.物流公司 and a.运送到 like '%'+b.运送到+'%'
      

  2.   

    冒似这样是不对的吧!
    我之前写法在续重这块有点不一样,其它都一样,但查询不到结果,等待楼下高手们
    select a.*,b.首重*b.首费+ (case when a.总重量>b.首重 then round((a.总重量-b.首重)/b.续重,0)*b.续费  else 0 end) as 合计费用 from 出货记录表 a inner join 运费模板表 b  on a.物流公司=b.物流公司 and a.运送到 like '%'+b.运送到+'%'
      

  3.   

    这里为正确答案,
    select a.*,b.首重*b.首费+ (case when a.总重量>b.首重 then round((a.总重量-b.首重)/b.续重,0)*b.续费  else 0 end) as 合计费用 from 出货记录表 a inner join 运费模板表 b  on a.物流公司=b.物流公司 and charindex(a.运送到,b.运送到)>0