首页 > 解决方案 > 稍等片刻后整理数据

问题描述

下一次如何查询以在更短的时间内修改排序的数据(在本例中反之亦然)。

这看起来像当前的结果

这是我的查询:

SELECT *
FROM Z_PRAESENZZEIT
WHERE ZPZ_Datum = N'2019-02-11T00:00:00.000' and ZPZ_LPE_ID = 121
order by ZPZ_ID  ASC

我需要按小于 (ZPZ_Von:1899-12-30 10:00:00<1899-12-30 13:00:00) 的 ZPZ_ID 和 ZPZ_VON 排序

标签: sqlsql-server

解决方案


我认为您不希望在更短的时间内(即更有效)进行排序,而是按小于给定值的时间排序。

SELECT *
FROM Z_PRAESENZZEIT
WHERE
    ZPZ_Datum = N'2019-02-11T00:00:00.000' and
    ZPZ_LPE_ID = 121
ORDER BY
    CASE WHEN ZPZ_Von < N'1899-12-30 13:00:00' THEN 0 ELSE 1 END,
    ZPZ_ID

这将首先列出所有ZPZ_Von小于1899-12-30 13:00:00by的记录ZPZ_ID,然后列出所有其他 by ZPZ_ID。该CASE表达式创建了两个记录排序依据的组。


如果您只想先按时间排序,然后按 ID 排序(如果两条或多条记录具有相同的时间),请编写

ORDER BY ZPZ_Von, ZPZ_ID

默认顺序总是升序ASC,即从小到大。如果你想反转它,写DESC


推荐阅读