sql >> データベース >  >> RDS >> Sqlserver

並べ替えは常に同じ結果を返します

    order by 句で動的列を渡すことはできません

    だからこれ

     Create procedure usp_GetBills
    @PageNo         INT = 1,
    @PageSize       INT = 10,
    @SortOrder      INT = 1,
    @SortColumn     VARCHAR(20) = ''
    AS
    BEGIN
    DECLARE
    @lSortColumn   VARCHAR(20),
    @lFirstRec      INT,
    @lLastRec       INT
    
    SET @SortColumn = LTRIM(RTRIM(@SortColumn))
    SET @lFirstRec  = (@PageNo - 1) *@PageSize
    SET @lLastRec   = (@PageNo * @PageSize + 1)
    
    ;WITH CTE_Results 
    AS(
    SELECT ROW_NUMBER() OVER (ORDER BY(
    @SortColumn))
    AS ROWNUM,P.BillNo, P.PropertyNo, P.BillDate,  P.BillFromDate, P.BillToDate, P.BillAmount, P.DueDate, P.Status 
    FROM Bill P)
    SELECT * from CTE_Results
    WHERE ROWNUM > @lFirstRec
    AND ROWNUM   < @lLastRec
    ORDER BY 
    --ROWNUM * @SortOrder
    CASE WHEN @SortIndex = 1 THEN BillNo END ASC,
    CASE WHEN @SortIndex = 2 THEN BillNo END DESC, 
    CASE WHEN @SortIndex = 1 THEN PropertyNo END ASC 
    CASE WHEN @SortIndex = 2 THEN PropertyNo END DESC 
    
    END
    



    1. TOADは&Stringをバインド変数と見なします

    2. 既存のMySQLデータベースからUMLクラス図を生成する方法はありますか?

    3. Oracle Naturalの結合とカウント(1)

    4. TSQLシュレッドXML-名前空間の操作