在sql中对varchars进行排序和排序

用户9366862

我有一个看起来像这样的 SQL 表

在此处输入图片说明

如您所见,原始本金余额的顺序不正确。这些变量存储为 VARCHAR。我将如何正确排序和排序它们?

这是我的sql代码:

WITH Original_Principal_Bal
AS (
    SELECT [New Loan Number]
        ,[Current Amortizing UPB]
        ,[Current Def UPB]
        ,sum([Current Amortizing UPB] + [Current Def UPB]) OVER (PARTITION BY Deal) AS [Total UPB]
        ,BPO
        ,[Current Rate]
        ,[Current Maturity]
        ,[Next Due Date]
        ,[First Payment Date]
        ,CASE 
            WHEN [Original Loan Amount] BETWEEN 0.01
                    AND 100000
                THEN '$0.01 to $100,000'
            WHEN [Original Loan Amount] BETWEEN 100000.01
                    AND 200000
                THEN '$100,000.01 to $200,000'
            WHEN [Original Loan Amount] BETWEEN 200000.01
                    AND 300000
                THEN '$200,000.01 to $300,000'
            WHEN [Original Loan Amount] BETWEEN 300000.01
                    AND 400000
                THEN '$300,000.01 to $400,000'
            WHEN [Original Loan Amount] BETWEEN 400000.01
                    AND 500000
                THEN '$400,000.01 to $500,000'
            WHEN [Original Loan Amount] BETWEEN 500000.01
                    AND 600000
                THEN '$500,000.01 to $600,000'
            WHEN [Original Loan Amount] BETWEEN 600000.01
                    AND 700000
                THEN '$600,000.01 to $700,000'
            WHEN [Original Loan Amount] BETWEEN 700000.01
                    AND 800000
                THEN '$700,000.01 to $800,000'
            WHEN [Original Loan Amount] BETWEEN 800000.01
                    AND 900000
                THEN '$800,000.01 to $900,000'
            WHEN [Original Loan Amount] BETWEEN 900000.01
                    AND 1000000
                THEN '$900,000.01 to $1,000,000'
            WHEN [Original Loan Amount] BETWEEN 1100000.01
                    AND 1200000
                THEN '$1,100,000.01 to $1,200,000'
            WHEN [Original Loan Amount] BETWEEN 1300000.01
                    AND 1400000
                THEN '$1,300,000.01 to $1,400,000'
            WHEN [Original Loan Amount] BETWEEN 1600000.01
                    AND 1700000
                THEN '$1,600,000.01 to $1,700,000'
            WHEN [Original Loan Amount] BETWEEN 1900000.01
                    AND 2000000
                THEN '$1,900,000.01 to $2,000,000'
            WHEN [Original Loan Amount] > 2000000.01
                THEN '$2,000,000 or greater'
            END AS [Original Principal Balance]
    FROM Portfolio_Analytics..Securitization_Tape
    )
SELECT [Original Principal Balance]
    ,COUNT([New Loan Number]) AS [Number of Mortgage Loans]
    ,ROUND(sum([Current Amortizing UPB] + [Current Def UPB]), 0) AS [Aggregate Unpaid Principal Balance as of Cut-off Date ($)]
    ,ROUND(avg([Current Amortizing UPB] + [Current Def UPB]), 0) AS [Average Unpaid Principal Balance ($)]
    ,ROUND(sum(([Current Amortizing UPB] + [Current Def UPB]) / [Total UPB]) * 100, 2) AS [Percetage of Aggregate Principal Balance as of Cut-off Date(%)]
    ,sum(BPO) AS [Aggregate Updated Value($)]
    ,ROUND(sum([Current Rate] * ([Current Amortizing UPB] + [Current Def UPB])) / sum([Current Amortizing UPB] + [Current Def UPB]), 2) AS [Weighted Average Mortgage Interest Rate(%)]
    ,ROUND(sum(([Current Amortizing UPB] + [Current Def UPB]) / bpo * ([Current Amortizing UPB] + [Current Def UPB])) / sum([Current Amortizing UPB] + [Current Def UPB]) * 100, 2) AS [Weighted Average Updated Loan-to-Value Ratio(%)]
    ,ROUND(sum((DATEDIFF(month, [Next Due Date], [Current Maturity]) + 1) * ([Current Amortizing UPB] + [Current Def UPB])) / (sum([Current Amortizing UPB] + [Current Def UPB])), 0) AS [Weighted Average Remaining Term to Maturity(Months)]
    ,ROUND(sum((DATEDIFF(month, [First Payment Date], [Next Due Date]) + 1) * ([Current Amortizing UPB] + [Current Def UPB])) / (sum([Current Amortizing UPB] + [Current Def UPB])), 0) AS [Weighted Average Remaining Term to Maturity(Months)]
FROM Original_Principal_Bal
GROUP BY [Original Principal Balance]

也许我在创建表格时需要以不同的方式存储数字,但我不确定如何匹配我想要的外观。

戈登·利诺夫

你可以做:

ORDER BY MIN([Original Loan Amount])

您还需要包含[Original Loan Amount]在 CTE 中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章