Excel 2010 SQL应用127 内连接例1

目录

示例数据表

实例代码

通过字母大小比较连接工作表


示例数据表

源数据

namebirthdayjoinday
A19811991
B19811990
C19801991
D19811990
E19801990

结果表

name1name2birthdayjoinday1
AD19811
AB19811
BD19810
CE19801

 

    如图所示为某应聘者去国内某知名ERP软件公司面试的SQL题目。如何使用SQL语句将源数据表转化成结果表?

实例代码

SELECT A.name AS name1,B.name AS name2,A.birthday,(A.joinday-B.joinday) AS joinday1
FROM [sheet1$] A,[sheet1$] B
WHERE A.birthday=B.birthday AND A.name<B.name
ORDER BY A.name

通过字母大小比较连接工作表

    通过效果图中列与列之间的关系可以发现:A与D之间的关系是birthday都为1981,说明birthday是A与D之间的连接桥梁。再从行与行之间的记录进行分析,发现name1字段的字母始终要比name2字段的字母要小,由此推出了另外一个连接条件:A.nameI<B.name2。若从效果图中推导出其关系,SQL语句即可迎刃而解。
    本例中的SQL语句理解为:首先将worker表分别定义为不同的表A及表B,然后列出表A的name字段,并把其命名为name1;列出表B的name字段,并将其命名为name2;列出表A的birthday字段、表A的joinday字段与表B的joinday字段相减得到新字段joindayl,通过使用WHERE子句包含连接条件,其条件是表A的birthday等于表B的birthday字段,并且表A的name字段小于表B的name字段,‘最后通过ORDER BY子句统一排序。
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值