相关疑难解决方法(0)

如何对两列或更多列进行条件排序

在 MS SQL Server 2005 中,我正在编写一个带有条件排序的查询,我的问题是我不知道如何使用两列进行条件排序?

如果我写了这样的代码,它就可以正常工作

select
    *
from 
    table
order by 
    case @pkr 
           when 'kol' then kol
           when 'nci' then nci
    end
Run Code Online (Sandbox Code Playgroud)

我不知道如何对两列或更多列进行条件排序

select
    *
from 
    table
order by 
    case @pkr
        when 'KOL-NCI' then kol,nci
        when 'kol-MPCI' then kol,mpci
    end
Run Code Online (Sandbox Code Playgroud)

有一个制作动态 TSQL 并使用的想法,sp_executesql但我仍在寻找更好的想法?

sql-server order-by

11
推荐指数
2
解决办法
6万
查看次数

ORDER BY CASE 表达式出现“转换失败”错误

我有以下存储过程,当我将“OrderBy”设置为“OrderNumber”时,该过程非常有效。

我收到以下错误:将 nvarchar 值“SK11270”转换为数据类型 int 时转换失败。

(SK11270 是 OrderNumber 列中的一个值,即 nvarchar(50))

如果我对任何其他 OrderBy 列运行相同的查询,它工作正常。

我完全迷失了,我的头很痛。任何人都可以看到会导致此问题的任何明显内容吗?

提前感谢您的任何想法...

富有的

这有效:

sp_jobs '1','20','','JobNumber','ASC','97','True','True','True','True','True','True','True','True','True','False','True','False','True','False','0'

这不会:
sp_jobs '1','20','','OrderNumber','ASC','97','True','True','True','True','True','True','True','True','True','False','True','False','True','False','0'

PROCEDURE [dbo].[sp_Jobs] 

@PageNumber int,
@PageSize int,
@FilterExpression varchar(500),
@OrderBy varchar(50),
@OrderDirection varchar(50),
@CustomerID int,
@ShowNotSet bit,
@ShowPlaced bit,
@ShowProofed bit,
@ShowReProofed bit,
@ShowApproved bit,
@ShowOnTime bit,
@ShowLate bit,
@ShowProblem bit,
@ShowCompleted bit,
@ShowDispatched bit,
@ShowUnapproved bit,
@ShowClosed bit,
@ShowReturned bit,
@ShowNoStock bit,
@UserID int

WITH RECOMPILE 

AS

BEGIN
WITH    Keys 
AS (SELECT TOP (@PageNumber * @PageSize) ROW_NUMBER() …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures

10
推荐指数
2
解决办法
7167
查看次数

标签 统计

sql-server ×2

order-by ×1

stored-procedures ×1