按日期链接表

时间:2018-12-05 05:02:32

标签: sql-server

我有两个如下表 儿童出勤 childid在今天更新 1 31/01/2018 20 1 28/02/2018 15 1 31/03/2018 18 1 30/04/2018 24 1 31/05/2018 17 1 30/06/2018 19 2 31/03/2018 25 2 30/04/2018 28 2 31/05/2018 22 2 30/06/2018 23

第二个表为

儿童班入学日期 1托儿所15/06/2017 1 balwari 2018年1月2日 2个托儿所01/01/2017 2 balwari 2018年1月1日 2桥课程01/04/2018

现在,我需要一个查询以返回childid,updatedon,presentdays,class。

我是sql的新手,不知道该怎么做。 我尝试过

SELECT t1.childid,t1.updatedon,t1.presentdays,t2.class
   FROM child_attendance t1 LEFT JOIN class_allocation t2
   ON t1.childid = t2.childid
   AND t1.updatedon >= t2.admissiondate

我的输出应该是这样

Output

您可以看到孩子1于2017年6月15日在托儿所入院,巴尔瓦里于2018年2月1日入院。这意味着他从2018年6月15日到2018年2月1日都是托儿所。

1 个答案:

答案 0 :(得分:0)

我认为此查询可以得到您想要的:

SELECT t1.childid, t1.updatedon, t1.presentdays,
    class=(SELECT TOP (1) class
            FROM Class_Allocation
            WHERE childid=t1.childid
            AND t1.updatedon>=admissiondate
            ORDER BY admissiondate DESC)
   FROM Child_Attendance t1