将SQL 语句装化为VB能够执行的语句

qq_42101986 2018-05-17 04:31:28
四个表:1、客户基本信息;2、服务记录明细表;3、订单明细;4产品占有率
sql查询没有任何问题,想要在VB中实现这样的查询功能,要如何解决,求大佬们帮忙!!!
下面是sql代码:


use 客户信息管理
go
select 客户名称,客户基本信息.客户ID,
注册资金评分=
(case when 客户基本信息.注册资金>=800 then '5'
when 客户基本信息.注册资金<800 and 客户基本信息.注册资金>=600 then '4'
when 客户基本信息.注册资金<600 and 客户基本信息.注册资金>=400 then '3'
when 客户基本信息.注册资金<400 and 客户基本信息.注册资金>=200 then '2'
else 1
end),
是否通过ISO认证评分=
(case when 客户基本信息.是否通过ISO认证='是' then 4
else 2
end),
业内评价评分=
(case when 客户基本信息.业内评价='优秀' then 5
when 客户基本信息.业内评价='良好' then 4
when 客户基本信息.业内评价='一般' then 2
else 1
end),
资产负债率评分=
(case when 客户基本信息.资产负债率<='10%' then 5
when 客户基本信息.资产负债率>'10%' and 客户基本信息.资产负债率<='15%' then 4
when 客户基本信息.资产负债率>'15%' and 客户基本信息.资产负债率<='20%' then 3
when 客户基本信息.资产负债率>'20%' and 客户基本信息.资产负债率<='25%' then 2
else 1
end),
销售盈利率评分=
(case when 客户基本信息.销售盈利率>='30%' then 5
when 客户基本信息.销售盈利率<'30%' and 客户基本信息.销售盈利率>='25%' then 4
when 客户基本信息.销售盈利率<'25%' and 客户基本信息.销售盈利率>='20%' then 3
when 客户基本信息.销售盈利率<'20%' and 客户基本信息.销售盈利率>='15%' then 2
else 1
end),
产品占有率.产品占有率评分,服务记录明细表.服务评分,订单明细.销售评分,订单明细.订货频率评分,(((case when 客户基本信息.注册资金>=800 then '5'when 客户基本信息.注册资金<800 and 客户基本信息.注册资金>=600 then '4'when 客户基本信息.注册资金<600 and 客户基本信息.注册资金>=400 then '3'when 客户基本信息.注册资金<400 and 客户基本信息.注册资金>=200 then '2'else 1 end)*0.6+(case when 客户基本信息.是否通过ISO认证='是' then 4 else 2 end)*0.4)*0.3+(case when 客户基本信息.业内评价='优秀' then 5when 客户基本信息.业内评价='良好' then 4when 客户基本信息.业内评价='一般' then 2 else 1 end)*0.45+((case when 客户基本信息.资产负债率<='10%' then 5 when 客户基本信息.资产负债率>'10%' and 客户基本信息.资产负债率<='15%' then 4when 客户基本信息.资产负债率>'15%' and 客户基本信息.资产负债率<='20%' then 3when 客户基本信息.资产负债率>'20%' and 客户基本信息.资产负债率<='25%' then 2 else 1 end)+0.65+(case when 客户基本信息.销售盈利率>='30%' then 5when 客户基本信息.销售盈利率<'30%' and 客户基本信息.销售盈利率>='25%' then 4when 客户基本信息.销售盈利率<'25%' and 客户基本信息.销售盈利率>='20%' then 3when 客户基本信息.销售盈利率<'20%' and 客户基本信息.销售盈利率>='15%' then 2 else 1 end)*0.35)*0.25)*0.15+销售评分*0.4+服务评分*0.25+(订货频率评分*0.6+产品占有率评分*0.4)*0.2 AS 总评分
from 客户基本信息
join (select 客户ID,
'产品占有率评分'=
case when 产品占有率.产品占有率>='80%' then 5
when 产品占有率.产品占有率<'80%' and 产品占有率.产品占有率>='60%' then 4
when 产品占有率.产品占有率<'60%' and 产品占有率.产品占有率>='40%' then 3
when 产品占有率.产品占有率<'40%' and 产品占有率.产品占有率>='20%' then 2
else 1
end
from 产品占有率)产品占有率
on 客户基本信息.客户ID=产品占有率.客户ID
join (select 客户ID,SUM(服务记录明细表.服务费用) as 总费用,SUM (服务记录明细表.服务费用)*100/(select SUM(服务记录明细表.服务费用) from 服务记录明细表) as 服务占比,
服务评分=
case when SUM (服务记录明细表.服务费用)*100/(select SUM(服务记录明细表.服务费用) from 服务记录明细表)>='30' then 1
when SUM (服务记录明细表.服务费用)*100/(select SUM(服务记录明细表.服务费用) from 服务记录明细表)<'30' and SUM (服务记录明细表.服务费用)*100/(select SUM(服务记录明细表.服务费用) from 服务记录明细表)>='15' then 2
when SUM (服务记录明细表.服务费用)*100/(select SUM(服务记录明细表.服务费用) from 服务记录明细表)<'15' and SUM (服务记录明细表.服务费用)*100/(select SUM(服务记录明细表.服务费用) from 服务记录明细表)>='8' then 3
when SUM (服务记录明细表.服务费用)*100/(select SUM(服务记录明细表.服务费用) from 服务记录明细表)<'8' and SUM (服务记录明细表.服务费用)*100/(select SUM(服务记录明细表.服务费用) from 服务记录明细表)>='4' then 4
else 5
end
from 服务记录明细表
group by 服务记录明细表.客户ID)服务记录明细表
on 客户基本信息.客户ID=服务记录明细表.客户ID
join (select 订单明细.客户ID,SUM(订单明细.利润) as 总利润,SUM (订单明细.利润)*100/(select SUM(订单明细.利润) from 订单明细) as 订单占比,
销售评分=
(case when SUM (订单明细.利润)*100/(select SUM(订单明细.利润) from 订单明细)>='25' then 5
when SUM (订单明细.利润)*100/(select SUM(订单明细.利润) from 订单明细) <'25' and SUM (订单明细.利润)*100/(select SUM(订单明细.利润) from 订单明细)>='15' then 4
when SUM (订单明细.利润)*100/(select SUM(订单明细.利润) from 订单明细) <'15' and SUM (订单明细.利润)*100/(select SUM(订单明细.利润) from 订单明细)>='8' then 3
when SUM (订单明细.利润)*100/(select SUM(订单明细.利润) from 订单明细) <'8' and SUM (订单明细.利润)*100/(select SUM(订单明细.利润) from 订单明细)>='4' then 2
else 1
end),
订货频率评分=
(case when COUNT(订单明细.客户ID)/(DATEDIFF(MM,MIN(订单明细.订货时间),MAX(订单明细.订货时间))+1)>=4 then 5
when COUNT(订单明细.客户ID)/(DATEDIFF(MM,MIN(订单明细.订货时间),MAX(订单明细.订货时间))+1)<4 and COUNT(订单明细.客户ID)/(DATEDIFF(MM,MIN(订单明细.订货时间),MAX(订单明细.订货时间))+1)>=3 then 4
when COUNT(订单明细.客户ID)/(DATEDIFF(MM,MIN(订单明细.订货时间),MAX(订单明细.订货时间))+1)<3 and COUNT(订单明细.客户ID)/(DATEDIFF(MM,MIN(订单明细.订货时间),MAX(订单明细.订货时间))+1)>=2 then 3
when COUNT(订单明细.客户ID)/(DATEDIFF(MM,MIN(订单明细.订货时间),MAX(订单明细.订货时间))+1)<2 and COUNT(订单明细.客户ID)/(DATEDIFF(MM,MIN(订单明细.订货时间),MAX(订单明细.订货时间))+1)>=1 then 2
else 1
end )
from 订单明细
group by 订单明细.客户ID)订单明细
on 客户基本信息.客户ID=订单明细.客户ID
order by 总评分 DESC
...全文
736 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
duzexinduzexin 2018-12-02
  • 打赏
  • 举报
回复
引用 5 楼 赵4老师 的回复:
[quote=引用 2 楼 qq_42101986 的回复:]
因为在VB里面要求可以修改总评分的各个属性的权重,所以查询过程只能在VB里面进行吧!

在VB里面也可以通过SQL语句创建、修改存储过程,并且在存储过程里面还可以动态生成SQL语句,再用EXEC执行呀![/quote]


赵四老师,就像你说的,我发现在SQL里面能用case when语句,但是当我在VB里面用SQL语句将excel数据导入到MSHFlexgrid里面时,就老是提示我无法识别关键字When,您知道怎么回事么?是不是不支持case when 啊?
qq_42101986 2018-05-18
  • 打赏
  • 举报
回复
有愿意帮忙的发私信给我,另有重谢!!!
qq_42101986 2018-05-18
  • 打赏
  • 举报
回复
萌新表示不懂,可以再详细一些吗?
赵4老师 2018-05-18
  • 打赏
  • 举报
回复
引用 2 楼 qq_42101986 的回复:
因为在VB里面要求可以修改总评分的各个属性的权重,所以查询过程只能在VB里面进行吧!
在VB里面也可以通过SQL语句创建、修改存储过程,并且在存储过程里面还可以动态生成SQL语句,再用EXEC执行呀!
qq_42101986 2018-05-18
  • 打赏
  • 举报
回复
真的没有大佬来帮忙嘛??
qq_42101986 2018-05-17
  • 打赏
  • 举报
回复
大佬们,求帮忙啊啊啊啊啊啊!
qq_42101986 2018-05-17
  • 打赏
  • 举报
回复
因为在VB里面要求可以修改总评分的各个属性的权重,所以查询过程只能在VB里面进行吧!
  • 打赏
  • 举报
回复
既然sql是固定的 写成视图或者存储过程 vb直接使用不是比较方便 不然你vb里面 换行拼接都是一大堆

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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