SQL按疑问排序

SQL按疑问排序,sql,sql-server,Sql,Sql Server,我正在使用SQL Server 2014。我有一个包含两列的表,AttendanceCode和AttendanceDescription,我使用dropdownlist来显示AttendanceDescription。我希望下拉列表顺序首先显示“当前”。我尝试使用此查询: |--------------------- |------------------ | | AttendanceCode | AttendanceDescription

我正在使用SQL Server 2014。我有一个包含两列的表,AttendanceCode和AttendanceDescription,我使用dropdownlist来显示AttendanceDescription。我希望下拉列表顺序首先显示“当前”。我尝试使用此查询:

|---------------------     |------------------           |
|      AttendanceCode      |     AttendanceDescription   |
|---------------------     |------------------           |
|          MC              |         Medical Leave       |
|---------------------     |------------------           |
|         NAPFA            |            NAPFA            |
|---------------------     |------------------           |
|        Present           |            Present          |
|---------------------     |------------------           |
还有这个

SELECT AttendanceCode, AttendanceDescription
FROM journalattendancestatus
ORDER BY (CASE AttendanceDescription WHEN 'P' THEN 1 ELSE NULL END) AttendanceDescription

但它们都不起作用。我还尝试将其更改为AttendanceCode,其中“P”表示“现在”

Order by就是按列对数据进行排序

例如:

SELECT AttendanceCode, AttendanceDescription
FROM journalattendancestatus
ORDER BY CASE WHEN AttendanceDescription = 'Present' THEN 1 ELSE 2 END,
         AttendanceDescription";
这将获取SQL并按字母的相反顺序对其进行排序


你到底想干什么?我也许能给你一个解决你想要完成的事情的方法

ORDER BY
子句中仅使用
AttendanceDescription
列一次

SELECT * FROM user WHERE AGE=18 ORDER BY NAME DESC

对于此查询,null将首先出现

SELECT AttendanceCode, AttendanceDescription
FROM journalattendancestatus
ORDER BY CASE WHEN AttendanceCode = 'Present' THEN 1  
              WHEN AttendanceCode = 'MC'      THEN 2  
              WHEN AttendanceCode = 'NAPFA'   THEN 3 
          END     
换成

ORDER BY (CASE AttendanceDescription WHEN 'P' THEN 1 ELSE NULL END) AttendanceDescription
第二个问题就快解决了

WHEN 'P' THEN 1 ELSE 2 END

但是当1有联系时,它会再次返回AttendanceDescription以断开联系,因此在本例中,它可以是任何东西。因此,请删除第二个查询。它有语法错误。我删除了“,”临近结束语句和查询末尾的双引号

ORDER BY CASE WHEN AttendanceDescription = 'Present' THEN 1 ELSE 2 END,
         AttendanceDescription";
在第一个查询中,您正在搜索列中不存在的字母“p”。你可以像这里一样使用

SELECT AttendanceCode, AttendanceDescription
FROM journalattendancestatus
ORDER BY CASE WHEN AttendanceDescription = 'Present' THEN 1 ELSE 2 END
         AttendanceDescription;

不是最好的选择,只是一个想法:

ORDER BY (CASE when AttendanceDescription like 'Pre%' THEN 1 ELSE NULL END) AttendanceDescription

这个在HANA对我有效

SELECT AttendanceCode, AttendanceDescription, 1 AS OrderIndex 
FROM journalattendancestatus
WHERE AttendanceDescription = 'P' 
UNION
SELECT AttendanceCode, AttendanceDescription, 2 AS OrderIndex 
FROM journalattendancestatus
WHERE AttendanceDescription != 'P' 
ORDER BY OrderIndex, AttendanceCode, AttendanceDescription

请检查输出选择@fltbasetax,选择天花板(@fltbasetax)

添加一些样本表数据,以及预期结果!添加了示例表数据我认为您的案例实际上没有选择键“present”-它是否拼写正确等-尝试在AttendanceDescription=“present”时放置案例,然后在您的字段列表中以1或2作为测试结束,并查看它在您预期的情况下显示为1或2-您的想法绝对正确!我确信第二个选项将“出席”放在列表的顶部是正确的,实际的文本、填充等可能存在一些问题。当AttendanceDescription=“出席”然后1其他2结束时,AttendanceDescription最终按案例顺序添加AttendanceDescription“我希望礼物在下拉列表中显示为默认值。现在有4到5个数据,比如现在、病假。添加了示例表数据。我在“现在”时按案例尝试此顺序,然后在“P”时按案例尝试此顺序,然后在“1其他2结束”时尝试此顺序。两者都不起作用。添加了示例表dataHi后,查询仍然不会显示为默认选项Present。感谢添加的样本表数据订单是医疗证书,NAPFA然后按ENTHI,看起来订单是正确的,但默认值仍然是医疗证书。可以把它改成现在吗?
SELECT AttendanceCode, AttendanceDescription
FROM journalattendancestatus
ORDER BY (CASE WHEN AttendanceDescription= 'Present' THEN 1 ELSE 0 END) DESC
declare @flttaxrate float
declare @fltArea float
declare @fltbasetax float

set @fltArea=139.3
set @flttaxrate=50

set @fltbasetax=@fltArea*@flttaxrate
select @fltbasetax
select ceiling(@fltbasetax)