ALTER PROCEDURE [dbo].[P2P_P_getRealStatistics]
-- Add the parameters for the stored procedure here
@ObligorName NVARCHAR(50) = '%' ,
@BusinessModel INT = NULL ,
@MainContractNO NVARCHAR(50) = '%' ,
@real_repay_date_min DATETIME = NULL ,
@real_repay_date_max DATETIME = NULL
AS
BEGIN
SELECT t6.客户名称 ,
t6.客户类型 ,
t6.业务类型 ,
t6.SP ,
t6.支付表编号 ,
月租金 ,
ISNULL(t6.本金, 0) 本金 ,
ISNULL(t6.利息, 0) 利息 ,
ISNULL(t6.租金合计, 0) 租金合计 ,
t6.LoanFlag ,
ISNULL(t6.手续费, 0) 手续费 ,
ISNULL(t6.保险费, 0) 保险费 ,
ISNULL(t6.GPS费, 0) GPS费 ,
ISNULL(P2P_Loan_ClearCharge.BreachMoney, 0) 违约金 ,
ISNULL(P2P_Loan_Charge_Info.ChargeSum, 0) 保证金 ,
ISNULL(t6.租金合计, 0) 实收总额 ,
ISNULL(t6.利息, 0) 实收总利息 ,
ISNULL(t6.本金, 0) 实收总本金 ,
t6.LoanID ,
t6.LoanTotal 实际放款
FROM ( SELECT t1.ObligorName 客户名称 ,
CASE t1.ObligorType
WHEN 1 THEN '个人'
WHEN 2 THEN '公司'
END 客户类型 ,
( SELECT CodeName
FROM dbo.SYSCode
WHERE dbo.SYSCode.CodeType = 'BusinessModel'
AND CodeValue = t2.BusinessModel
) 业务类型 ,
t3.Nickname 'SP' ,
t2.MainContractNO 支付表编号 ,
( SELECT real_repay_benxi
FROM P2P_Loan_Repayment
WHERE P2P_Loan_Repayment.LoanID = t2.LoanID
AND term_preNum = 1
) 月租金 ,
( SELECT SUM(plan_repay_benjin)
FROM P2P_Loan_Repayment
WHERE P2P_Loan_Repayment.LoanID = t2.LoanID
AND P2P_Loan_Repayment.real_repay_date >= @real_repay_date_min
AND P2P_Loan_Repayment.real_repay_date <= @real_repay_date_max
) 本金 ,
( SELECT SUM(plan_repay_lixi) real_repay_lixi
FROM P2P_Loan_Repayment
WHERE P2P_Loan_Repayment.LoanID = t2.LoanID
AND P2P_Loan_Repayment.real_repay_date >= @real_repay_date_min
AND P2P_Loan_Repayment.real_repay_date <= @real_repay_date_max
) 利息 ,
( SELECT SUM(real_repay_benxi) real_repay_benxi
FROM P2P_Loan_Repayment
WHERE P2P_Loan_Repayment.LoanID = t2.LoanID
AND P2P_Loan_Repayment.real_repay_date >= @real_repay_date_min
AND P2P_Loan_Repayment.real_repay_date <= @real_repay_date_max
) 租金合计 ,
t2.LoanID ,
t2.LoanFlag ,
( SELECT P2P_Loan_Finance_Info.FinanceSum
FROM dbo.P2P_Loan_Finance_Info
WHERE P2P_Loan_Finance_Info.LoanID = t2.LoanID
AND P2P_Loan_Finance_Info.Item_TypeName = '首付款'
AND dbo.P2P_Loan_Finance_Info.FinanceUnit = 1
) 首付比例 ,
( SELECT P2P_Loan_Finance_Info.FinanceSum
FROM dbo.P2P_Loan_Finance_Info
WHERE P2P_Loan_Finance_Info.LoanID = t2.LoanID
AND P2P_Loan_Finance_Info.Item_TypeName = '手续费'
AND dbo.P2P_Loan_Finance_Info.FinanceUnit = 0
) 手续费 ,
( SELECT P2P_Loan_Finance_Info.FinanceSum
FROM dbo.P2P_Loan_Finance_Info
WHERE P2P_Loan_Finance_Info.LoanID = t2.LoanID
AND P2P_Loan_Finance_Info.Item_TypeName = '保险费'
AND dbo.P2P_Loan_Finance_Info.FinanceUnit = 0
) 保险费 ,
( SELECT P2P_Loan_Finance_Info.FinanceSum
FROM dbo.P2P_Loan_Finance_Info
WHERE P2P_Loan_Finance_Info.LoanID = t2.LoanID
AND P2P_Loan_Finance_Info.Item_TypeName = 'GPS费'
AND dbo.P2P_Loan_Finance_Info.FinanceUnit = 0
) GPS费 ,
t4.LoanTotal
FROM P2P_Obligor t1 ,
P2P_Loan_Info t2 ,
GQShow_UserBase t3 ,
P2P_Loan_Process_Info t4
WHERE t1.ObligorType = 1
AND t2.LoanUserID = t1.ObligorID
AND t3.UserID = t2.FamilyUserID
AND t4.Flag = 2
AND t4.LoanID = t2.LoanID
AND t2.BusinessModel = CASE WHEN @BusinessModel = 0
THEN t2.BusinessModel
WHEN @BusinessModel IS NULL
THEN t2.BusinessModel
ELSE @BusinessModel
END
) t6
LEFT JOIN P2P_Loan_ClearCharge ON t6.LoanID = P2P_Loan_ClearCharge.LoanID
LEFT JOIN P2P_Loan_Charge_Info ON t6.LoanID = P2P_Loan_Charge_Info.ChargeSum
WHERE t6.客户名称 LIKE '%' + @ObligorName + '%'
AND t6.支付表编号 LIKE '%' + @MainContractNO + '%'
AND 本金 IS NOT NULL
ORDER BY t6.客户名称;
-- Add the parameters for the stored procedure here
@ObligorName NVARCHAR(50) = '%' ,
@BusinessModel INT = NULL ,
@MainContractNO NVARCHAR(50) = '%' ,
@real_repay_date_min DATETIME = NULL ,
@real_repay_date_max DATETIME = NULL
AS
BEGIN
SELECT t6.客户名称 ,
t6.客户类型 ,
t6.业务类型 ,
t6.SP ,
t6.支付表编号 ,
月租金 ,
ISNULL(t6.本金, 0) 本金 ,
ISNULL(t6.利息, 0) 利息 ,
ISNULL(t6.租金合计, 0) 租金合计 ,
t6.LoanFlag ,
ISNULL(t6.手续费, 0) 手续费 ,
ISNULL(t6.保险费, 0) 保险费 ,
ISNULL(t6.GPS费, 0) GPS费 ,
ISNULL(P2P_Loan_ClearCharge.BreachMoney, 0) 违约金 ,
ISNULL(P2P_Loan_Charge_Info.ChargeSum, 0) 保证金 ,
ISNULL(t6.租金合计, 0) 实收总额 ,
ISNULL(t6.利息, 0) 实收总利息 ,
ISNULL(t6.本金, 0) 实收总本金 ,
t6.LoanID ,
t6.LoanTotal 实际放款
FROM ( SELECT t1.ObligorName 客户名称 ,
CASE t1.ObligorType
WHEN 1 THEN '个人'
WHEN 2 THEN '公司'
END 客户类型 ,
( SELECT CodeName
FROM dbo.SYSCode
WHERE dbo.SYSCode.CodeType = 'BusinessModel'
AND CodeValue = t2.BusinessModel
) 业务类型 ,
t3.Nickname 'SP' ,
t2.MainContractNO 支付表编号 ,
( SELECT real_repay_benxi
FROM P2P_Loan_Repayment
WHERE P2P_Loan_Repayment.LoanID = t2.LoanID
AND term_preNum = 1
) 月租金 ,
( SELECT SUM(plan_repay_benjin)
FROM P2P_Loan_Repayment
WHERE P2P_Loan_Repayment.LoanID = t2.LoanID
AND P2P_Loan_Repayment.real_repay_date >= @real_repay_date_min
AND P2P_Loan_Repayment.real_repay_date <= @real_repay_date_max
) 本金 ,
( SELECT SUM(plan_repay_lixi) real_repay_lixi
FROM P2P_Loan_Repayment
WHERE P2P_Loan_Repayment.LoanID = t2.LoanID
AND P2P_Loan_Repayment.real_repay_date >= @real_repay_date_min
AND P2P_Loan_Repayment.real_repay_date <= @real_repay_date_max
) 利息 ,
( SELECT SUM(real_repay_benxi) real_repay_benxi
FROM P2P_Loan_Repayment
WHERE P2P_Loan_Repayment.LoanID = t2.LoanID
AND P2P_Loan_Repayment.real_repay_date >= @real_repay_date_min
AND P2P_Loan_Repayment.real_repay_date <= @real_repay_date_max
) 租金合计 ,
t2.LoanID ,
t2.LoanFlag ,
( SELECT P2P_Loan_Finance_Info.FinanceSum
FROM dbo.P2P_Loan_Finance_Info
WHERE P2P_Loan_Finance_Info.LoanID = t2.LoanID
AND P2P_Loan_Finance_Info.Item_TypeName = '首付款'
AND dbo.P2P_Loan_Finance_Info.FinanceUnit = 1
) 首付比例 ,
( SELECT P2P_Loan_Finance_Info.FinanceSum
FROM dbo.P2P_Loan_Finance_Info
WHERE P2P_Loan_Finance_Info.LoanID = t2.LoanID
AND P2P_Loan_Finance_Info.Item_TypeName = '手续费'
AND dbo.P2P_Loan_Finance_Info.FinanceUnit = 0
) 手续费 ,
( SELECT P2P_Loan_Finance_Info.FinanceSum
FROM dbo.P2P_Loan_Finance_Info
WHERE P2P_Loan_Finance_Info.LoanID = t2.LoanID
AND P2P_Loan_Finance_Info.Item_TypeName = '保险费'
AND dbo.P2P_Loan_Finance_Info.FinanceUnit = 0
) 保险费 ,
( SELECT P2P_Loan_Finance_Info.FinanceSum
FROM dbo.P2P_Loan_Finance_Info
WHERE P2P_Loan_Finance_Info.LoanID = t2.LoanID
AND P2P_Loan_Finance_Info.Item_TypeName = 'GPS费'
AND dbo.P2P_Loan_Finance_Info.FinanceUnit = 0
) GPS费 ,
t4.LoanTotal
FROM P2P_Obligor t1 ,
P2P_Loan_Info t2 ,
GQShow_UserBase t3 ,
P2P_Loan_Process_Info t4
WHERE t1.ObligorType = 1
AND t2.LoanUserID = t1.ObligorID
AND t3.UserID = t2.FamilyUserID
AND t4.Flag = 2
AND t4.LoanID = t2.LoanID
AND t2.BusinessModel = CASE WHEN @BusinessModel = 0
THEN t2.BusinessModel
WHEN @BusinessModel IS NULL
THEN t2.BusinessModel
ELSE @BusinessModel
END
) t6
LEFT JOIN P2P_Loan_ClearCharge ON t6.LoanID = P2P_Loan_ClearCharge.LoanID
LEFT JOIN P2P_Loan_Charge_Info ON t6.LoanID = P2P_Loan_Charge_Info.ChargeSum
WHERE t6.客户名称 LIKE '%' + @ObligorName + '%'
AND t6.支付表编号 LIKE '%' + @MainContractNO + '%'
AND 本金 IS NOT NULL
ORDER BY t6.客户名称;
解决方案 »
- 请问关于两个表之间数据查询和更新 应该怎么写SQL语句?
- 事件探查器中cpu的那一字段是指什么?我的那个字段的记录大部分都大于100,这样正常吗?
- 错误源:.net sqlclient data provider 错误:当indentity_insert 设为OFF,不能为表'table'中标识列插入显示值
- 还原数据库时出现的问题!!!帮忙看看
- 如何写这个存储过程:
- 在存储过程中,当执行一条select语句时,如何把数据库引擎检索出查询结果放入变更中
- 存储过程怎么用???
- 请教一条动态SQL语句的写法
- 存儲過程中的insert問題?
- 如何用SQL语句更改表名!?
- 用字符串拼接一个动态的表名问题
- sql语句子查询很多 怎么优化?五百多条数据要查2分钟
可以改为表值函数,网上查一下很多的,一个简单的例子:create function dbo.fn_m_org(@org_id numeric(10))
returns table
asreturn(
with org
as
(
select ORG_ID,ORG_NAME,EMP_ID
from m_org
where org_id = @org_id
) select * from org
)
go
select *
from dbo.fn_m_org(1) o
http://blog.csdn.net/roy_88/article/details/6883078
不建议动态用视图或函数,通过存储过程便于优化
改成left join吧