我的表格如下:
Date Name TypeID
---------------------------------------------------
01/01/2012 01:50 abc 70
01/01/2012 02:20 bcd 101
01/01/2012 01:30 abc 70
01/01/2012 01:55 bcd 101
01/01/2012 02:15 abc 70
01/01/2012 02:15 xyz 110
现在从这张表中我想得到以下结果。
Date Name TypeID
---------------------------------------------------
01/01/2012 01:30 abc 70
01/01/2012 01:55 bcd 101
01/01/2012 02:15 xyz 110
01/01/2012 01:50 abc 70
01/01/2012 02:15 abc 70
01/01/2012 02:20 bcd 101
我想要这样的记录。意味着我想要使用最新的记录排序顺序,但首先它应该显示所有typeid的剩余记录,然后是排序中的其余记录。
任何人都可以帮助我在sql中使用CTE或其他查询来解决这个问题吗?
答案 0 :(得分:0)
您没有说明您正在使用的DBMS,但是当您提到CTE时,您还应该有可用的窗口函数:
select date, name, typeId
from (
select date, -- btw: an awful name for a column
name, -- another awful name for a column
typeId,
dense_rank() over (partition by name order by date) as rnk
from the_table
) t
order by rnk, name;