相关疑难解决方法(0)

动态订单方向

我编写一个SP作为参数列接受排序和方向.

我不想使用动态SQL.

问题是设置方向参数.

这是部分代码:

SET @OrderByColumn = 'AddedDate'
SET @OrderDirection = 1;

…

ORDER BY 
    CASE WHEN @OrderByColumn = 'AddedDate' THEN CONVERT(varchar(50), AddedDate)
        WHEN @OrderByColumn = 'Visible' THEN CONVERT(varchar(2), Visible)
        WHEN @OrderByColumn = 'AddedBy' THEN AddedBy
        WHEN @OrderByColumn = 'Title' THEN Title    
    END
Run Code Online (Sandbox Code Playgroud)

sql sql-server stored-procedures case sql-order-by

24
推荐指数
4
解决办法
2万
查看次数

alpha列的条件SQL ORDER BY ASC/DESC

在MS SQL Server 2008 R2中编写存储过程,我想避免使用DSQL ...

我希望sort方法(ASC或DESC)是有条件的.

现在,使用数字列,我只需使用case语句并取消值来模拟ASC或DESC ......即:

... ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [NumericColumn] ELSE -[NumericColumn] END ASC
Run Code Online (Sandbox Code Playgroud)

使用alpha列执行此操作的适当方法是什么?

编辑:我想到了一个聪明的方法,但它看起来非常低效......我可以将我的有序alpha列插入带有自动编号的临时表中,然后使用上述方法按自动编号排序.

EDIT2:

你们怎么看待这种方法?

ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [AlphaColumn] ELSE '' END ASC,
CASE @OrderAscOrDesc WHEN 0 THEN '' ELSE [AlphaColumn] END DESC
Run Code Online (Sandbox Code Playgroud)

我不知道是否强制对统一列进行排序比从排序字符串中导出数字更有效

sql-server conditional stored-procedures sql-order-by

14
推荐指数
1
解决办法
3万
查看次数

DESCENDING/ASCENDING存储过程的参数

我有以下SP

CREATE PROCEDURE GetAllHouses
    set @webRegionID = 2
    set @sortBy = 'case_no'
    set @sortDirection = 'ASC'

    AS
    BEGIN

        Select 
            tbl_houses.*
        from tbl_houses 
        where 
            postal in (select zipcode from crm_zipcodes where web_region_id = @webRegionID)
        ORDER BY 
            CASE UPPER(@sortBy) 
                    when 'CASE_NO' then case_no 
                    when 'AREA' then area 
                    when 'FURNISHED' then furnished 
                    when 'TYPE' then [type] 
                    when 'SQUAREFEETS' then squarefeets 
                    when 'BEDROOMS' then bedrooms 
                    when 'LIVINGROOMS' then livingrooms 
                    when 'BATHROOMS' then bathrooms 
                    when 'LEASE_FROM' then lease_from 
                    when 'RENT' then rent 
                    else case_no 
            END …
Run Code Online (Sandbox Code Playgroud)

t-sql stored-procedures

4
推荐指数
1
解决办法
6545
查看次数

select语句中的变量表名

我有一些表用于存储不同的文件信息,如拇指,图像,数据表,...

我正在编写一个存储过程来检索特定ID的文件名.就像是:

    CREATE PROCEDURE get_file_name(
    @id int,
    @table nvarchar(50)
    )as
    if @table='images'
        select [filename] from images
        where id = @id
    if @table='icons'
        select [filename] from icons
        where id = @id
....
Run Code Online (Sandbox Code Playgroud)

如何使用case when语句重写此过程,还是只使用表名作为变量?

t-sql sql-server stored-procedures

4
推荐指数
1
解决办法
3万
查看次数