奇怪的SQL查询

Pra*_*yak 0 sql t-sql sql-server sql-server-2008

我正在做一个项目,我有一个奇怪的要求.

我有一个表A与领域(TechID(Primary Key), Orders (INTEGER NUMBER),Name (Varchar)).

Orders可以是0, 1, 2, 3, .......我的任务的值是显示按Orders字段排序的表的内容.首先显示Orders字段具有值的行1,然后依次显示其余的行.值0必须在末尾显示值.如果所有Orders字段的值都为0,我需要按TechID字段对表进行排序.

关于实现这个的任何想法?这可以通过SQL查询实现,还是应该为此编写T-Sql脚本?

Nic*_*rey 9

这很简单:

select *
from A
order by case Orders     -- 1. Orders values
           when 0 then 2 --    of zero collate after
           else        1 --    non-zero Orders values
         end ,           --
         Orders ,        -- 2. Then collate by Orders value proper
         TechID          -- 3. Then by TechID
Run Code Online (Sandbox Code Playgroud)