SQL 查询 - 按问题排序

SQL Query - Order by issue

当我在table中有重复的订单时,数据显示如下。首先是所有 header 记录,然后是该特定订单的所有行记录。

OrderNo     Column1  
300         Header   
300         Header   
300         Line   
300         Line    
200         Header  
200         Line  
200         Line    

预期输出:

OrderNo     Column1  
300         Header  
300         Line  
300         Header  
300         Line   
200         Header  
200         Line  
200         Line  

我需要将此数据导出到 excel 文件中。所以我需要一个正确的记录序列,即Order1,Header,Line 然后 Order2 Header,Line 我如何使用 sql 实现此目的?

您可以在 order by 子句中使用 row_number() 插入 headers 和行:

select t.*
from t
order by orderno,
         row_number() over (partition by orderno, column1 order by ?);

? 用于确定行中最终排序的任何列。如果你不在乎,你可以使用 orderno.