Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6593|回复: 13

SQL困惑求解

[复制链接]
发表于 2019-7-27 15:35 | 显示全部楼层 |阅读模式
2学分
    在做表间连接时,当A1的业绩为10000时,其提成比例应为0.05%,但表间连接后却是2%;也就是说临界终点-0.01也不能保证业绩在临界终点位时提成比例的正确。求解。
语句是:select 姓名,业绩,提成点数,提成点数*业绩 as 提成金额 from [业绩表$] a1,[提成表$] a2 where 业绩 between 临界起点 and 临界终点-0.01

222720guy27ssj2ni23jh2.jpg 表间连接.rar (22.7 KB, 下载次数: 8)

发表于 2019-7-28 13:29 | 显示全部楼层
select *,switch(业绩>100000,0.1,业绩>20000,0.058,业绩>18000,0.04,业绩>15000,0.035,业绩>10000,0.02,业绩>0,0.0005) as 提成点数,业绩*提成点数 as 提成金额 from [业绩表$]
回复

使用道具 举报

 楼主| 发表于 2019-7-28 20:40 | 显示全部楼层
mytto88 发表于 2019-7-28 13:29
select *,switch(业绩>100000,0.1,业绩>20000,0.058,业绩>18000,0.04,业绩>15000,0.035,业绩>10000,0.02,业 ...

用switch太繁了。其实我只想知道我那样的做法究竟错在哪儿。
回复

使用道具 举报

发表于 2019-8-11 14:05 | 显示全部楼层
初学者都爱犯的毛病,我也一样经历,你没有仔细地了解两表引用的规则,虽然侥幸代码通过了运行,但完全是错误的结果!!
连接问题.JPG

表间连接.zip (30.29 KB, 下载次数: 6)
回复

使用道具 举报

 楼主| 发表于 2019-8-13 09:15 | 显示全部楼层
cui26896 发表于 2019-8-11 14:05
初学者都爱犯的毛病,我也一样经历,你没有仔细地了解两表引用的规则,虽然侥幸代码通过了运行,但完全是错 ...

首先谢谢。你这题是用VBA来做的,我是用SELECT语句来做出现的问题。我现在想知道的是用SQL来做怎么做?
回复

使用道具 举报

发表于 2019-8-13 10:15 | 显示全部楼层
别忘了,这里是excel的VBA版块,不是SQL论坛,你应该到CNSD去提问,不应该在这里提问。
回复

使用道具 举报

发表于 2019-8-14 08:13 | 显示全部楼层
类似这样提问的人,不找自己的错在哪里,对给出的正确答案却视而不见,很奇葩的!!!我对了MySQL5.1手册,即使是用SQL语句,与VBA引用没有任何区别!!!以下是复制粘贴过来的相关规定:

使用tbl_name AS alias_name或tbl_name alias_name可以为一个表引用起别名:

·                mysql> SELECT t1.name, t2.salary FROM employee AS t1, info AS t2
·                    ->     WHERE t1.name = t2.name;
·                mysql> SELECT t1.name, t2.salary FROM employee t1, info t2
·                    ->     WHERE t1.name = t2.name;

你看看清楚,你学T-SQL,连手册都懒得翻一下???!!!
回复

使用道具 举报

发表于 2019-8-17 10:36 | 显示全部楼层
VBA 也可以用SQL提取数据。。SQL在EXCEl用的语句没有差异,在VBA中, SQL 语句可以做大动态提取数据。上面已经给出答案了...
回复

使用道具 举报

 楼主| 发表于 2019-8-22 09:28 | 显示全部楼层
cui26896 发表于 2019-8-13 10:15
别忘了,这里是excel的VBA版块,不是SQL论坛,你应该到CNSD去提问,不应该在这里提问。

是的,我对这方面不清楚,谢谢你。
回复

使用道具 举报

发表于 2019-8-22 19:59 | 显示全部楼层
本帖最后由 rardge2015 于 2019-8-22 20:01 编辑

你的问题出在“提成表”的设计,临界点有重复,比如第一行临界终点和第二行的临界起点。
你自己也知道有这个问题,所以你在 SQL 最后给临界终点减了 0.01,“between 临界起点 and 临界终点-0.01”,但这样一来,临界终点就变成了 9999.99,于是 10000 显然不能 between 在 0~9999.99之间,自然去匹配第二行 10000~14999.99,于是得到了2.00%
你要确定规则,临界点是含上限还是含下限。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 18:23 , Processed in 1.933451 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表