SQL: 我怎样才能按特定范围的身份证号码,然后时间来订购?
SQL: How can I order by a specific range of ID numbers, then time?
这段代码很可能写得不好。这是我第一次涉足 SQL - 我正在从事一个不完全是我的工作的项目,所以我正在尝试边做边学。
我现在的两大问题:
- 我需要将超过一定数量的身份证号码分开。对于我们的实例,我们只说 1000。因此首先显示任何 1000 以下的 ID,以及它们各自的预约时间。
- 我 运行 在使用 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.
中列的别名
这段代码很可能写得不好。这是我第一次涉足 SQL - 我正在从事一个不完全是我的工作的项目,所以我正在尝试边做边学。
我现在的两大问题:
- 我需要将超过一定数量的身份证号码分开。对于我们的实例,我们只说 1000。因此首先显示任何 1000 以下的 ID,以及它们各自的预约时间。
- 我 运行 在使用 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.
中列的别名