为下面的场景编写一个sql或块generate below结果集

fnatzsnv  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(251)
Table1
Name typeofcontract  amount
Ajay    Account -2000
Ajay    Loan    5000
Ajay    Deposit 11000
Aman    Deposit 12000
Aman    Loan    5000
Aman    Account 2000

需要使用sql生成一个结果集,如下所示

Name  noofaccount Noofloan Noofdeposit borrowedamount  availamount  total amount
Ajay   1         1      1              7000            11000        6000
l0oc07j2

l0oc07j21#

您可以这样做:

SELECT Name,
    SUM(IF(typeofcontract='Account') THEN 1 ELSE 0) NoOfAccount,
    SUM(IF(typeofcontract='Loan') THEN 1 ELSE 0) NoOfLoan,
    SUM(IF(typeofcontract='Deposit') THEN 1 ELSE 0) NoOfDeposit,
    SUM(IF(typeofcontract='Account') THEN amount * -1
        ELSE IF (typeofcontract='Loan') THEN amount) BorrowedAmount,
    SUM(IF(typeofcontract='Deposit') THEN amount) AvailableAmount,
    SUM(IF(typeofcontract='Deposit') THEN amount
        ELSE IF (typeofcontract='Loan') THEN amount * -1) TotalAmount
FROM Table1
GROUP BY Name

请检查计算数量的逻辑,因为从您的示例来看它是不确定的。这应该给你一个解决这类问题的方法。还有其他方法可以得到这个输出。

相关问题