首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL索引LTV计算

SQL索引LTV计算
EN

Stack Overflow用户
提问于 2021-01-23 13:15:35
回答 1查看 165关注 0票数 0

我得到了以下两个表的数据,需要计算2016年12月、2017年12月和2018年12月每个账户的索引LTV,并且不确定如何执行。解决方案需要一个SQL脚本。任何想法都非常感谢!

索引表:

  • IndexArea -指房价指数与
  • IndexMonth-月(yyyymm格式)有关的地区,即房价指数与
  • 运动有关的地区--一个指数,代表该指数月份的房价。

数据表:

抵押贷款account

  • PropertyArea的唯一标识-房屋是in

  • ValuationDate的地区- house

  • PropertyValuation的估值日期-截至ValuationDate

  • BalanceDecember2016的房屋估价-12月份2016

  • BalanceDecember2017的按揭/贷款未偿价值-12月份2017

  • BalanceDecember2018的按揭/贷款未偿价值-2018年12月的抵押/贷款未偿价值
EN

回答 1

Stack Overflow用户

发布于 2021-01-23 14:26:40

这里有一个想法,虽然很简单,但你可以计算它。我假设每个月和每个感兴趣的领域都有索引数据,因此不需要“模糊匹配”。例如TSQL / MS SQL Server。

因此,使用与您的两个关键表相同的模型,设置一些示例数据.

代码语言:javascript
复制
CREATE TABLE #DataTable
(MortgageNo VARCHAR(15), 
PropertyArea VARCHAR(50), 
ValuationDate DATETIME, 
PropertyValuation DECIMAL(12, 2), 
BalanceDecember2016 DECIMAL(12, 2), 
BalanceDecember2017 DECIMAL(12, 2), 
BalanceDecember2018 DECIMAL(12, 2))

INSERT INTO #DataTable
VALUES
('MORTGAGE001', 'KENT', '01-Jan-2015', 300000, 250000, 230000, 220000),
('MORTGAGE002', 'LONDON', '01-Jan-2016', 500000, 450000, 430000, 420000)

CREATE TABLE #IndexTable
(IndexArea VARCHAR(50),
IndexMonth CHAR(6),
Movement DECIMAL(7, 4))

INSERT INTO #IndexTable
VALUES
('KENT', '201501', 1.05), -- 105%
('KENT', '201612', 1.10), -- 110%
('KENT', '201712', 1.15),
('KENT', '201812', 1.10),
('LONDON', '201601', 1.15),
('LONDON', '201612', 1.15),
('LONDON', '201712', 1.25),
('LONDON', '201812', 1.30)

现在,将数据转到轴点,这样就不用为3个不同的平衡日期列出3列了,我们有3行,每个行都有一个平衡日期和一个余额。

代码语言:javascript
复制
CREATE TABLE #BalanceDates (BalanceDate DATE)
INSERT INTO #BalanceDates 
VALUES ('2016-12-01'),('2017-12-01'),('2018-12-01')

SELECT 
    MortgageNo,
    PropertyArea,
    ValuationDate,
    PropertyValuation,
    balanceDates.BalanceDate,
    CASE balanceDates.BalanceDate 
        WHEN '2016-12-01' THEN BalanceDecember2016
        WHEN '2017-12-01' THEN BalanceDecember2017
        WHEN '2018-12-01' THEN BalanceDecember2018
    END AS Balance
INTO
    #BalancePivoted
FROM 
    #DataTable mortgageData, 
    #BalanceDates balanceDates

现在,计算。两个连接到索引数据-一个在最初的资产评估日期,以获得在属性评估日期的指数级别。第二,在平衡日期获取索引级别。在估价时计算房价指数相对于平衡日的百分比差额,并调整房地产估价:

balance.PropertyValuation * (indexBalance.Movement / indexAtValuation.Movement)

例如,如果估值指数为1 (100%),平衡日指数为1.1 (110%),则原来的10万美元估值调整为11万。

然后,您可以使用调整后的估值与余额,以计算贷款与价值的比率,并希望这可以作为一个指数的LTV数字。

balance.Balance / (balance.PropertyValuation * (1.0 + indexBalance.Movement - indexAtValuation.Movement)) AS IndexedLTV

代码语言:javascript
复制
SELECT 
    balance.*,
    indexAtValuation.Movement AS IndexAtValuationDate,
    indexBalance.Movement AS IndexAtBalanceDate,
    indexBalance.Movement - indexAtValuation.Movement AS IndexPercentChange,
    balance.PropertyValuation * (indexBalance.Movement / indexAtValuation.Movement) AS AdjustedValuation,
    balance.Balance / (balance.PropertyValuation * (1.0 + indexBalance.Movement - indexAtValuation.Movement)) AS IndexedLTV
FROM 
    #BalancePivoted balance
    JOIN
    #IndexTable indexAtValuation
    ON
    DATEADD(MONTH, DATEDIFF(MONTH, 0, balance.ValuationDate), 0) = CONVERT(date, indexAtValuation.IndexMonth + '01')
    AND
    balance.PropertyArea = indexAtValuation.IndexArea
    JOIN
    #IndexTable indexBalance
    ON
    balance.BalanceDate = CONVERT(date, indexBalance.IndexMonth + '01')
    AND
    balance.PropertyArea = indexBalance.IndexArea
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65859622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档