0

我有如下表:

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 的最新记录,然后是排序中的其余记录。

谁能帮助我使用 CTE 或 sql 中的其他查询来解决这个问题?

4

1 回答 1

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;
于 2013-05-13T13:50:06.537 回答