首页 > 解决方案 > SQL - 优先级方案

问题描述

我有 Postgres 表,我需要按照以下要求对数据进行排序

情况1:

我有一个表客户,其中包含队列中的客户,它有两种类型。特殊 (P) 和非特殊 (E) 客户,(P) - 特殊客户具有高优先级。

我需要对客户进行排序,如下三种情况

Case-1: 

Source        Target
id Customer    id Customer
1 E            1 E
2 E            5 P
3 E            2 E 
4 E            6 P
5 P            3 E
6 P            4 E

在 case-1 中,它在行中有 4 (E),然后是 2 (P)。所以我需要将(P)特殊客户放在2个非特殊(E)客户之间。

Case-2: 

Source        Target
id Customer    id Customer
1 P            1 P
2 P            2 P
3 P            3 P 
4 E            4 E
5 E            7 P
6 E            5 E
7 P            6 E
8 E            8 E
9 E            9 E

在 case-2 中,它有 3 (P) 行。所以我需要将所有 3 (P) 排成一行。因为(P)是特殊客户。之后,与 case-1 相同

Case-3: 

Source        Target
id Customer    id Customer
1 E            1 E
2 P            2 P
3 P            3 P 
4 P            4 P
5 E            5 E
6 E            6 P
7 E            7 E
8 P            8 E

在 case-3 中,它类似于 Case-1 和 Case-2 的组合。我需要一个查询来完成上述所有情况。

我尝试了类似rownumber & 分离客户& 做Union 之类的东西。但不工作。

标签: sqlpostgresql

解决方案


推荐阅读