后台-插件-广告管理-内容页广告位一(手机)

您现在的位置是:首页 > 开发类 > 问答问答

SQL语句新问题

2021-07-06 20:39:52问答人已围观

简介 A表
ID Name Time
1 123 2008-1-1
1 123 2008-1-2
1 123 2008-1-3
1 123 2008-1-4
1 123 2008-1-5
1 123 2008-1-6

B表
ID V1 V2 V3 Time
1 0 0 0 2008-1-1
1

A表

ID Name Time

1 123 2008-1-1

1 123 2008-1-2

1 123 2008-1-3

1 123 2008-1-4

1 123 2008-1-5

1 123 2008-1-6

B表

ID V1 V2 V3 Time

1 0 0 0 2008-1-1

1 0 0 0 2008-1-2

1 0 0 0 2008-1-5

1 0 0 0 2008-1-10

查询结果:()为说明

a.ID Name a.TimeV1 V2 V3 b.Time

1 123 2008-1-1 2008-1-1(取B表中对应的数据)

1 123 2008-1-2 2008-1-2(取B表中对应的数据)

1 123 2008-1-3 2008-1-2(向下取B表中最近的数据)

1 123 2008-1-4 2008-1-2(向下取B表中最近的数据)

1 123 2008-1-5 2008-1-5(取B表中对应的数据)

1 123 2008-1-62008-1-5(向下取B表中最近的数据)

A表中数据查询出来,再找与之对应B表中匹配时间相同的数据,时间不存在,则向下取最近的数据?

想了一上午没法解决?现在怀疑能不能用SQL写出来

PS:

不能写:

select A.*,

(select top 1 v1 from B where B.ID=A.ID and B.time<=A.Timeorder by B.Time desc) as V1

from A

这样的语句

最佳答案:select A.ID, A.Name, A.[Time] as ATime, B.V1, B.V2, B.V3, B.[Time] as BTime from A inner join B on B.[Time] = (select MAX([Time]) from B ttb where ttb.[Time] <= A.[Time])

文章来源:https://q.cnblogs.com/q/2728/

Tags:数据库 SQLServer 

很赞哦! ()

后台-插件-广告管理-内容页广告位二(手机)

相关文章

后台-插件-广告管理-内容页广告位三(手机)
后台-插件-广告管理-内容页广告位四(手机)

文章评论

留言与评论(共有 0 条评论)
   
验证码:

本栏推荐

站点信息

  • 文章统计90296篇文章
  • 浏览统计10087次浏览
  • 评论统计1个评论
  • 标签管理标签云
  • 统计数据:统计代码
  • 微信公众号:扫描二维码,关注我们