SQL: 我怎样才能按特定范围的身份证号码,然后时间来订购?

SQL: How can I order by a specific range of ID numbers, then time?

这段代码很可能写得不好。这是我第一次涉足 SQL - 我正在从事一个不完全是我的工作的项目,所以我正在尝试边做边学。

我现在的两大问题:

  1. 我需要将超过一定数量的身份证号码分开。对于我们的实例,我们只说 1000。因此首先显示任何 1000 以下的 ID,以及它们各自的预约时间。
  2. 我 运行 在使用 ORDER BY 时出错,因为我在代码中使用了 UNION。是:

ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.

错误指向 END ASC 行。我已经在网上阅读了有关将整个内容包括在它自己的 SELECT 语句中并使用它在 ORDER BY 代码中进行引用的信息,但没有任何运气。

相关代码如下:

select substring(convert(nvarchar, a.time, 8), 1,5) Time
 , PersonID AS ID
 [BLAH BLAH BLAH]
from [BLAH BLAH BLAH]
where [BLAH BLAH BLAH]

union

select 'Alts'
 , PersonID
 [BLAH BLAH BLAH]
from [BLAH BLAH BLAH]
where [BLAH BLAH BLAH]

ORDER  BY CASE
            WHEN PersonID <= 1000 THEN PersonID
            ELSE 1001
          END ASC,
          a.time

底部的这个 ORDER BY 是我要设置的。其余代码似乎执行良好。我正在使用 Microsoft SQL Server 2012。

问题是排序依据中的 "a.time",您应该将其称为 "Time",因为这是 select.

中列的别名