Sql 如何在查找表中查找周数
我有两张桌子 一种是查找工作周编号和工作日的表周 另一个是注册 我想返回的是Week表中的当前WeekLabel,其中Entrytime位于两个日期之间 例如: 入场时间2016-08-15 09:02:15.0000000 介于周开始日期值2016-08-15 00:00:00.000和2016-08-22 00:00:00.000之间 所以我想从week table返回WeekLabel 1和WeekStartdate 2016-08-15,以此类推。。 用于获取在EntryTime之前或当天发生的最新WeekStartDate 切换到外部应用以实现左连接功能,例如,如果没有相应的WeekLabel,则返回null 用于获取在EntryTime之前或之后发生的最新的WeekStartDateSql 如何在查找表中查找周数,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有两张桌子 一种是查找工作周编号和工作日的表周 另一个是注册 我想返回的是Week表中的当前WeekLabel,其中Entrytime位于两个日期之间 例如: 入场时间2016-08-15 09:02:15.0000000 介于周开始日期值2016-08-15 00:00:00.000和2016-08-22 00:00:00.000之间 所以我想从week table返回WeekLabel 1和WeekStartdate 2016-08-15,以此类推。。 用于获取在EntryTime之前或当
切换到外部应用以实现左连接功能,例如,如果没有相应的WeekLabel,则返回null 您可以根据entrytime大于weekstartdate来加入表;这将使前几周的每个条目成倍增加,因此您可以获得最新的条目,假设它们不断增加,则该条目的最大值为WeekLabel
select t2.ID, t2.CODE, max(t1.WeekLabel)
from Week t1
join Register t2
on t2.Entrytime > t1.Weekstartdate
group by t2.ID, t2.CODE
您可以根据entrytime大于weekstartdate来加入表;这将使前几周的每个条目成倍增加,因此您可以获得最新的条目,假设它们不断增加,则该条目的最大值为WeekLabel
select t2.ID, t2.CODE, max(t1.WeekLabel)
from Week t1
join Register t2
on t2.Entrytime > t1.Weekstartdate
group by t2.ID, t2.CODE
另一个选项是使用datediff函数连接到week引用表:
SELECT * from
register r
join [Week] w on
DATEDIFF(day, r.entryTime, w.weekStartDate) between 0 and 7
另一个选项是使用datediff函数连接到week引用表:
SELECT * from
register r
join [Week] w on
DATEDIFF(day, r.entryTime, w.weekStartDate) between 0 and 7
另一个选项是简单连接
Select R.*
,W.WeekLabel
,W.WeekStartdate
From Register R
Join [Week] W
on R.EntryTime >= W.WeekStartDate
and R.EntryTime < DateAdd(DAY,7,W.WeekStartDate)
另一个选项是简单连接
Select R.*
,W.WeekLabel
,W.WeekStartdate
From Register R
Join [Week] W
on R.EntryTime >= W.WeekStartDate
and R.EntryTime < DateAdd(DAY,7,W.WeekStartDate)
可爱的简单方法,但不应该是DATEADDDAY,8。。。读DATEADDDAY,7。。。?示例:2016-08-15+7=2016-08-22。这两个都已更正。@目标数据。。。我想得太多了。谢谢你的帮助,我们都会去的!很好的方法,避免使用相关子查询或不必要的聚合。很简单的方法,但不应该DATEADDDAY,8。。。读DATEADDDAY,7。。。?示例:2016-08-15+7=2016-08-22。这两个都已更正。@目标数据。。。我想得太多了。谢谢你的帮助,我们都会去的!很好的方法,可以避免使用相关子查询或不必要的聚合。