postgresql - 基于多列对记录进行排序
问题描述
我有一个带有以下列的经销商表
dealer_name is_iso is_gst is_approved
& 需要按以下顺序显示经销商记录
dealers with all columns set should appear first,
then dealers with iso & gst,
then with iso & verified,
then with gst & verified,
then with iso,
then with gst
经销商表中的数据就像
dealer_name is_iso is_gst Is_approved
A 1 1 1
B 1 0 1
C 1 0 0
D 0 1 0
E 1 1 0
F 0 1 1
G 1 0 0
G 1 1 1
目前,我正在使用 CASE WHEN(下面的答案)来实现这一点并且需要知道是否有更好的方法?
解决方案
SELECT
*,
CASE
WHEN (typeA = 1 and typeB = 1 and isISO = 1) THEN 6
WHEN (typeA = 1 and typeB = 1 and isISO = 0) THEN 5
WHEN (typeA = 1 and typeB = 0 and isISO = 1) THEN 4
WHEN (typeA = 0 and typeB = 1 and isISO = 1) THEN 3
WHEN (typeA = 1 and typeB = 0 and isISO = 0) THEN 2
WHEN (typeA = 0 and typeB = 1 and isISO = 0) THEN 1
ELSE 0
END as dealer_order
FROM
dealers
ORDER BY
dealer_order desc
推荐阅读
- javascript - 如何从另一个组件 n ember.js 调用组件中的函数?
- rust - 如何专门化枚举的功能?
- python - 使用 pandas.apply() 时在赋值之前引用的局部变量
- sql - 从 bigint 数组转换值
- javascript - 我无法更改导航栏中文本的颜色
- c++ - 使用类型别名声明可变参数函数
- azure - 如何限制对 Azure Function 的调用,N 次从给定的机器/IP
- apache-flink - 如何从数组列中获取数组元素
- django - 使用 django 发送文件
- python - 如何使用 OpenCV 增加我的面罩检测项目的 FPS?