Sql 查询技巧 某例 关于in的排序
在有时候使用in语句查询的时候,in语句中很多项,如15项,自己同时想让查询出来结果能够按照in语句中该字段顺序查询出来。
而Sql Server是默认按照自己的顺序排列出来的,所以一定会把结果集重新排序的。
而如果使用case when的方法虽然很繁琐,但也是可以实现的
select item_code,apply_dept,keeper_ename from item_master where
item_code in(
'BES.F.F.0006.N00',
'BQS.F.F.0076.N00',
'BQS.F.F.0079.N00',
'BQS.F.F.018B.F00',
'BQS.F.F.00BM.N00',
'BQS.F.F.00BX.N00',
'BQS.F.F.00CZ.N00',
'BES.F.F.0008.N00',
'BQS.Q.A.08FY.N00',
'BQS.F.F.00B0.N00',
'BQS.F.F.00D8.N00')
order by case item_code
when 'BES.F.F.0006.N00' then 1
when 'BQS.F.F.0076.N00' then 2
when 'BQS.F.F.0079.N00' then 3
when 'BQS.F.F.018B.F00' then 4
when 'BQS.F.F.00BM.N00' then 5
when 'BQS.F.F.00BX.N00' then 6
when 'BQS.F.F.00CZ.N00' then 7
when 'BES.F.F.0008.N00' then 8
when 'BQS.Q.A.08FY.N00' then 9
when 'BQS.F.F.00B0.N00' then 10
when 'BQS.F.F.00D8.N00' then 11
end
相关文档:
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
......
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using AHUT_TetWebERP;
......
Copy 以下内容到查询分析器操作:
-- 3 ****************************************************
-- 熟悉系统自带的一些函数
-- 3.1 --------------------------------------------------
-- 数学函数
-- ABS(num_expression) 返回给定数值表达式的绝对值
-- C ......
CREATE PROCEDURE fenye
@tblName varchar(255)='wdf1', -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@fldName varchar(255)='userid', -- 排序的字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@doCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设 ......
很多时候,我们可能希望按月、按天、按年做一些数据统计,但是,我们实际保存的数据可能是一个很精确的发生时间,可能是到秒。如何根据一个时间之截取其中的一部分就成了问题。
有两个解决方法:
最直接的想法利用DatePart或者Year、Month、Day函数
CAST(
(
STR( Y ......