SQL:如何按特定范围的ID号排序,然后按时间排序?

时间:2015-02-03 19:24:06

标签: sql sql-server sql-server-2012 sql-order-by union

这段代码编写得很糟糕。这是我第一次涉足SQL - 我正在开展一个与我的工作完全不同的项目,所以我一直在努力学习它。

我现在遇到两大问题:

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

    如果语句包含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。

1 个答案:

答案 0 :(得分:1)

问题是&#34; a.time&#34;按顺序,你应该把它称为&#34;时间&#34;因为那是select中列的别名。