【发布时间】:2016-08-01 02:13:23
【问题描述】:
我有一张如下表,
|产品 |品牌 |订购 |描述 | -------------------------------------------------- -------- |TTT | CCC | 1 | FFF | |电子电气设备 | DDD | 2 | DDD | |ZZZ |血脑屏障 | 99 |空 | |神经网络 | FFF | 99 |空 | |QQ |电子电气设备 |空 |空 | |BBB | FFF | 1 | FFF | |BBB | GGG | 1 | CCC | |GGG |空 |空 |空 | |嗯|血脑屏障 | 99 |空 |我想按 Order asc、Description asc、Brand asc、Product asc 订购, 但是 Order null 和 99 应该被视为一组,然后按 Brand 和 Product 排序。
预期结果应如下所示,
|产品 |品牌 |订购 |描述 | -------------------------------------------------- -------- |BBB | GGG | 1 | CCC | |TTT | CCC | 1 | FFF | |BBB | FFF | 1 | FFF | |电子电气设备 | DDD | 2 | DDD | |嗯|血脑屏障 | 99 |空 | |ZZZ |血脑屏障 | 99 |空 | |QQ |电子电气设备 |空 |空 | |神经网络 | FFF | 99 |空 | |GGG |空 |空 |空 |总是 null 排在第一位或最后,但我需要一个查询来根据每个条件使用不同的字段排序。
【问题讨论】:
-
“订单空和99应该被视为一组”是什么意思?
-
当 order 为 99 或 NULL 时,它应该只根据 Brand 和 Product 进行排序。谢谢
-
那么就是说如果是99或者NULL,应该在结果列表的末尾吧?
-
description 不为null 时,按Order、Description、Brand、Product 排序(可视为排名0)。当 Order 为 null 或 99(可以认为是排名 1)时,应按 Brand 和 Product 排序。当除产品(排名 2)之外的所有内容都为空时,应按产品订购。以另一种方式,每个排名应该有不同的列用于排序。谢谢
-
您可以使用COALESCE 将
NULL值替换为您想要的任何值,例如,如果您认为NULL和99相同,请在@ 中使用COALESCE(Order, 99)987654326@ 子句。