这段代码编写得很糟糕。这是我第一次涉足SQL - 我正在开展一个与我的工作完全不同的项目,所以我一直在努力学习它。
我现在遇到两大问题:
如果语句包含UNION,INTERSECT或EXCEPT运算符,则ORDER BY项必须出现在选择列表中。
错误指向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。
答案 0 :(得分:1)
问题是&#34; a.time&#34;按顺序,你应该把它称为&#34;时间&#34;因为那是select中列的别名。