我有如下表数据。有 4 列:DATE、SLIP_NO、ORDER_NO、ITEM_NAME
日期 | SLIP_NO |订单号 |项目名 2023 年 1 月 8 日 | 006983 | J13828 | MIY-000-003 2023 年 1 月 8 日 | 006984 | J13830 | MIY-000-013 2023 年 1 月 8 日 | 006985 | J13829 | MIY-000-005 2023 年 1 月 8 日 | 076672 | J13829 | MIY-000-010 2023 年 8 月 8 日 | 006986 | J13838 | MIY-000-005 2023 年 8 月 8 日 | 006986 | J13838 | MIY-000-005 2023 年 8 月 8 日 | 006986 | J13840 | MIY-000-015 2023年8月22日 | 006997 | J13855 | MIY-000-014 2023 年 8 月 31 日 | 000035 | |税10% 2023 年 8 月 31 日 | 000034 | |税8%
我想这样排序
日期 | SLIP_NO |订单号 |项目名 2023 年 1 月 8 日 | 006983 | J13828 | MIY-000-003 2023 年 1 月 8 日 | 006984 | J13830 | MIY-000-013 2023 年 1 月 8 日 | 006985 | J13829 | MIY-000-005 2023 年 1 月 8 日 | 076672 | J13829 | MIY-000-010 2023 年 8 月 8 日 | 006986 | J13838 | MIY-000-005 2023 年 8 月 8 日 | 006986 | J13838 | MIY-000-005 2023 年 8 月 8 日 | 006986 | J13840 | MIY-000-015 2023年8月22日 | 006997 | J13855 | MIY-000-014 2023 年 8 月 31 日 | 000034 | |税8% 2023 年 8 月 31 日 | 000035 | |税10%
两行
TAX 8%
和 TAX 10%
始终位于表格底部。
有没有办法只按最后两行的名称排序,而不改变两列 DATE 和 SLIP_NO 的顺序? 我希望第
TAX 8%
行始终显示在第 TAX 10%
行上方。
要实现所需的排序顺序,其中包含“TAX 8%”的行出现在包含“TAX 10%”的行之前,您可以在 SQL 查询中结合使用排序和条件排序。
这是一个示例查询,它可以实现所需的排序顺序,同时保留“DATE”和“SLIP_NO”列的顺序:
SELECT DATE, SLIP_NO, ORDER_NO, ITEM_NAME
FROM your_table
ORDER BY
CASE
WHEN ITEM_NAME = 'TAX 8%' THEN 0 -- Assign a lower value to 'TAX 8%' to make it appear first
WHEN ITEM_NAME = 'TAX 10%' THEN 1 -- Assign a higher value to 'TAX 10%' to make it appear second
ELSE 2 -- For all other rows, maintain their original order
END,
DATE, -- Sort by DATE column
SLIP_NO -- Sort by SLIP_NO column
在此查询中,
ORDER BY
子句使用CASE
语句根据“ITEM_NAME”列的值向每行分配自定义排序值。具有“TAX 8%”的行分配较低的值 (0),具有“TAX 10%”的行分配较高的值 (1)。所有其他行通过分配值 2 来保持其原始顺序。
应用自定义排序后,查询将按“DATE”列对行进行排序,然后按“SLIP_NO”列对行进行排序,以保留其原始顺序。
通过使用此查询,您应该能够实现所需的排序顺序,其中“TAX 8%”的行出现在“TAX 10%”的行上方,同时保持“DATE”和“SLIP_NO”列的顺序.