我有一个与一个函数相交的查询,该函数可以提取银行系统中的异常信息。这些例外中的每一个都有大量的信息,我正在寻找一种合适的方式来分组和/或联合我的工作,以便正确地发布。 我的SQL如下:
SELECT cb.loanNumber, cb.customerName, cb.borrowerType,
case WHEN cb.borrowerType = 'Primary Borrower' THEN 1
ELSE 2 END as borrowerOrder
FROM ( SELECT c.customerName, c.customerNumber,
'Primary Borrower' AS borrowerType,l.loanNumber
FROM customer AS c INNER JOIN loan AS l
ON c.customerId=l.customerId
UNION SELECT c.customerName, c.customerNumber,
bt.borrowerTypeName AS borrowerType,l.loanNumber
FROM customer AS c
INNER JOIN coborrower AS cb
ON c.customerId=cb.customerId
INNER JOIN loan AS l
ON l.loanId=cb.loanId
INNER JOIN borrowerType AS bt
ON bt.borrowerTypeId=cb.borrowerTypeId
) AS cb
INNER JOIN fnGetReportExceptions
('-1', '-1', 'All', '-1', '-1', 'L',
'All', 'All', 'All', '0',
'-1', '-1', '-1') func
ON cb.loanNumber = func.loanNumber
GROUP BY cb.loanNumber, cb.customerName, cb.borrowerType
ORDER BY cb.loanNumber, borrowerOrder,borrowerType, cb.customerName
凌乱我知道,但它是我必须要合作的。这个SQL提取了我的例外贷款清单以及下面的任何共同提供者。问题是当我尝试从函数中添加信息时,它会因为返回的异常数量而产生。
所以举个例子。当我的选择变为
时SELECT
cb.loanNumber,
cb.customerName,
cb.borrowerType,
case WHEN cb.borrowerType = 'Primary Borrower' THEN 1
ELSE 2 END as borrowerOrder,
func.exceptionDefName
...
我得到像
这样的东西loan Number customerName borrowerType borrowerOrder DefName
111 John Smith Primary Borrower 1 Missng Sig
111 John Smith Primary Borrower 1 Missng Doc
111 Wendy Smith CoBorrower 2 Missng Sig
111 Wendy Smith Coborrower 2 Missng Guar
111 Wendy Smith Coborrower 2 Missing Doc
我在寻找的是:
loan Number customerName borrowerType borrowerOrder DefName
111 John Smith Primary Borrower 1 Missng Sig
Missng Doc
Wendy Smith CoBorrower 2 Missng Sig
Missng Guar
Missing Doc
我会通过UNIONS和Selects做到这一点,但这似乎是一个糟糕的方法,因为我引用的功能可能会导致巨大的性能损失,如果这是客户想要的非常一般的报告。
由于
答案 0 :(得分:0)
我实际上是在SSRS的前端做了这个,在一个组内进行分组。然后是一个儿童组。
它完美地显示了数据,首先对官员进行分组,然后是贷款,其中包含子报告作为贷款ID组的一部分。