将值返回到两个表之前和之后

时间:2014-03-21 14:40:55

标签: sql sql-server tsql

对于下表,我需要两个脚本来提取两个后续表。 生成的脚本必须相当老派,并且与SQL2000向后兼容。 任何建议都非常感谢。

首先,对于CARE_ID的每个值,我需要返回EVENT_TYPE所在的所有行(CH,TE,BR),EVENT_DATE是EVENT_TYPE为SU的行的EVENT_DATE之前的最后一个日期。每个CARE_ID只会有一个SU实例。

例如 - 对于CARE_ID 6460,这是将返回的行

CARE_ID   EVENT_ID  EVENT_DATE        EVENT_TYPE
6460      1699      05/01/2014 00:00  CH

其次我需要的与上面的内容非常相似,但我需要EVENT_TYPE所在的第一个实例(CH,TE,BR),而EVENT_DATE是EVENT_TYPE = SU的EVENT_DATE之后的第一个日期。

例如 - 对于CARE_ID 6460,这是将返回的行

CARE_ID   EVENT_ID  EVENT_DATE          EVENT_TYPE
6460      1698      12/03/2014 00:00    CH

在这两种情况下,如果有多行由EVENT_DATE分隔,因为它们在同一日期有EVENT_DATE,那么tie tie是EVENT_ID。对于SU之前的实例,EVENT_ID值应该是最高的,对于SU之后的实例,EVENT_ID值应该是最低的。

CARE_ID EVENT_ID  EVENT_DATE        EVENT_TYPE
3       189       15/04/2010 00:00  SU
3       104       12/05/2010 00:00  CH
3       16        12/07/2010 00:00  BR
3       17        13/07/2010 00:00  BR
3       18        13/07/2010 00:00  BR
39      6         21/07/2009 00:00  CH
39      45        09/10/2009 00:00  TE
78      9         28/07/2009 00:00  TE
78      11        28/07/2009 00:00  CH
95      21        31/07/2009 00:00  CH
95      21        31/07/2009 00:00  TE
151     49        21/03/2010 00:00  TE
217     158       18/02/2010 00:00  SU
217     102       30/03/2010 00:00  CH
355     19        13/07/2010 00:00  BR
355     20        13/07/2010 00:00  BR
355     21        13/07/2010 00:00  BR
355     22        13/07/2010 00:00  BR
355     23        13/07/2010 00:00  BR
355     56        16/07/2010 00:00  TE
355     111       16/07/2010 00:00  CH
364     569       29/01/2011 00:00  SU
364     673       24/08/2012 00:00  TE
367     247       01/07/2010 00:00  SU
369     117       28/07/2010 00:00  CH
369     248       28/07/2010 00:00  SU
380     277       08/07/2011 00:00  TE
631     147       25/12/2009 00:00  CH
631     74        15/01/2010 00:00  TE
631     148       02/02/2010 00:00  CH
1066    472       11/11/2010 00:00  SU
1066    91        15/11/2010 00:00  TE
1661    216       25/01/2011 00:00  CH
1661    217       25/01/2011 00:00  CH
1661    95        01/02/2011 00:00  TE
1661    218       01/02/2011 00:00  CH
1663    97        25/01/2011 00:00  TE
1663    98        01/02/2011 00:00  TE
1663    223       01/02/2011 00:00  CH
1666    100       23/01/2011 00:00  TE
1666    225       01/02/2011 00:00  CH
1805    378       05/03/2011 00:00  CH
1805    383       05/03/2011 00:00  CH
1805    379       06/03/2011 00:00  CH
1805    381       07/03/2011 00:00  CH
2123    769       05/05/2011 00:00  SU
2123    280       10/07/2011 00:00  TE
2222    434       11/05/2011 00:00  CH
2222    513       15/06/2011 00:00  CH
4541    2285      01/02/2013 00:00  SU
4541    1688      04/03/2014 00:00  CH
4711    2300      01/02/2012 00:00  SU
4711    1257      07/02/2012 00:00  CH
4730    1262      22/11/2012 00:00  CH
4730    2303      30/11/2012 00:00  SU
6460    1699      05/01/2014 00:00  CH
6460    3201      10/01/2014 00:00  SU
6460    1698      12/03/2014 00:00  CH
6464    1701      18/12/2013 00:00  CH

1 个答案:

答案 0 :(得分:0)

首先要确保它与SQL中的所有内容兼容,而不是在SQL而不是T-SQL中编写它。你到目前为止所完成的代码在哪里?