SQL如何实现区间Join

dandy1420 2018-03-28 05:38:23
小弟有一SQL疑惑,不知道怎么解决,求大家帮忙下,一张销售表,表中含有销售额,职员工号,以及销售日期,另外一张职位表,里面含有职员工号,岗位,岗位有效起始日期,以及岗位有效结束日期,如何拼成,职员工号,销售日期,岗位,销售额(比如某员工在2018.1.3-2018.3.3是销售代表,2018.4.3- 是销售经理)
...全文
1568 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
TT^_^TT 2018-05-13
  • 打赏
  • 举报
回复
我的运行环境是在SQL Server 2008 R2 代码如下 SELECT 职员工号+"在"+销售日期+"是"+岗位 FROM 销售表 LEFT JOIN 职位表 ON 销售表.职工工号=职位表.职位工号 WHERE 销售日期 BETWEEN 有效起始日期 AND 有效结束日期
jenny6666 2018-05-13
  • 打赏
  • 举报
回复
left join(销售表.职员工号=职位表.职员工号 and 销售表.销售日期 between 职位表.岗位有效起始日期 and isnull(职位表.岗位有效结束日期, '2099/12/31')) 这样如果岗位表没有数据,但是销售数据有的,需要是销售数据是全部都在的,即使匹配不到的岗位这个字段直接为null
zheninchangjiang 2018-03-28
  • 打赏
  • 举报
回复
left join即可
引用 2 楼 dandy1420 的回复:
[quote=引用 1 楼 zbdzjx 的回复:] 大致这样: 销售表.职员工号=职位表.职员工号 and 销售表.销售日期 between 职位表.岗位有效起始日期 and isnull(职位表.岗位有效结束日期, '2099/12/31')
这个只是找到了匹配的,但是没有匹配的呢,比如岗位表没有数据,但是销售数据有的,需要是销售数据是全部都在的,即使匹配不到的岗位这个字段直接为null[/quote]
dandy1420 2018-03-28
  • 打赏
  • 举报
回复
引用 1 楼 zbdzjx 的回复:
大致这样: 销售表.职员工号=职位表.职员工号 and 销售表.销售日期 between 职位表.岗位有效起始日期 and isnull(职位表.岗位有效结束日期, '2099/12/31')
不好意思我理解错你的意思,你这个应该是join的条件,我想成2表查询条件了,谢谢了
dandy1420 2018-03-28
  • 打赏
  • 举报
回复
引用 1 楼 zbdzjx 的回复:
大致这样: 销售表.职员工号=职位表.职员工号 and 销售表.销售日期 between 职位表.岗位有效起始日期 and isnull(职位表.岗位有效结束日期, '2099/12/31')
这个只是找到了匹配的,但是没有匹配的呢,比如岗位表没有数据,但是销售数据有的,需要是销售数据是全部都在的,即使匹配不到的岗位这个字段直接为null
zbdzjx 2018-03-28
  • 打赏
  • 举报
回复
大致这样: 销售表.职员工号=职位表.职员工号 and 销售表.销售日期 between 职位表.岗位有效起始日期 and isnull(职位表.岗位有效结束日期, '2099/12/31')

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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