我正在尝试对数据进行排序,并且在发生这种情况时,我必须使用小时/分钟和秒来订购此序列。但是,当我按功能使用rank / partition时,它几乎就像根本不会将其识别为按时间顺序排列的数据。我尝试排序的数据示例如下:
Mod_Order Last_Activity ACTIVITY_DATE_DTTM hdm_modif_dttm
1 NULL 15/08/2007 00:00:00 59:47.3
2 NULL 27/09/2007 14:30:02 59:22.9
3 NULL 27/11/2007 15:30:02 59:10.5
3 NULL 27/11/2007 15:30:02 58:38.9
正如你所看到的最后两个ACTIVITY_DATE_DTTM日期时间完全一样,所以我需要更进一步 - 我从hdm_modif_dttm字段中删除了日期,看它是否有任何区别,但它没有(我把它留作了时间虽然我认为它无论如何都没有任何区别)。所以我的代码如下:
Update q
set q.Mod_Order = b.Mod_Order
from [#Temp_last_act_2]q
Left join
(
select
RANK () over
(partition by pathway_id
order by pathway_id, ACTIVITY_DATE_DTTM,hdm_modif_dttm) as Mod_Order,
PATHWAY_ID,
MODIF_DTTM,
ACTIVITY_DATE_DTTM
from #temp_Last_act_2
) as b on b.PATHWAY_ID = q.PATHWAY_ID
and b.MODIF_DTTM = q.MODIF_DTTM
and b.ACTIVITY_DATE_DTTM = q.ACTIVITY_DATE_DTTM
是否有人知道使用此功能的任何限制,我不知道或有一个功能可以更好地处理这个(或我真的很愚蠢?)