从总和

时间:2015-10-29 17:06:04

标签: sql-server group-by

我正在寻找一种方法来从SQL脚本中的求和列中加总另一个数量。

制作更简单的剧本

   SELECT c.customerName, b.bankName, sum(1) as ExceptionCount
    FROM  customer c INNER JOIN bank b on c.customerBranchId = 
b.branchId
    INNER JOIN  exception e ON c.customerId = e.exceptionId
    GROUP BY b.bankName, customerName
    ORDER BY b.bankName, customerName

所以,如果我运行这个,我的结果是这样的:

BOB     bank1       17
Sue     bank2       8
Steve   bank3       12

我正在寻找的另一个专栏是对客户名称的异常进行汇总,以便将其转换为

BOB bank1   17  3  <-- This is the exceptionCount By CustomerName   
Sue bank2   8   2   (that's what I am looking for)
Steve   bank3   12  4

1 个答案:

答案 0 :(得分:0)

类似的东西:

SELECT b.bankId, b.bankName, c.customerId, c.customerName, c.customerNumber,
count(*) exceptionCount
FROM
 exception AS ex INNER JOIN exceptionDefinition AS ed
  ON ex.exceptionDefId=ed.exceptionDefId
 INNER JOIN customer AS c ON c.customerId=ex.customerId
 INNER JOIN bank AS b ON c.bankId=b.bankId
 LEFT OUTER JOIN loan AS l ON ex.loanId=l.loanId
 LEFT OUTER JOIN collateral AS cl ON cl.collateralLoanId=l.loanId
 LEFT OUTER JOIN exceptedDocument AS exdoc ON 
exdoc.exceptionId=ex.exceptionId
WHERE
 ex.statusType = 'required'
 AND ((ed.computationType = 'manual' AND ex.exceptionState <> 'N')
OR(ed.computationType ='computed' AND exdoc.documentExceptionState > 'N') )
 GROUP BY
 b.bankId, b.bankName, c.customerId, c.customerName, c.customerNumber
ORDER BY
 b.bankName,
 c.customerName,
 l.loanNumber

如果外部联接返回许多行,您可能需要执行count(distinct ex.exceptionId)