[英]How to update table2 from table1, into corresponding entry in table2?
我想計算不同表中存儲庫的出現,並在FinalTable的相應列中進行更新。
銀行表格:
BankName ErrorCode
SBI 200
ICICI 200
SBI 400
SBI 500
SBI 503
ATMTable:
BankName ErrorCode
ICICI 200
ICICI 400
ICICI 400
SBI 500
SBI 503
MitraTable:
BankName ErrorCode
ICICI 200
ICICI 200
SBI 400
SBI 500
SBI 503
PNB 501
決賽桌:
BankName BankCount ATMCount MitraCount TotalCount
ICICI 1 3 2 6
SBI 4 2 3 9
PNB 0 0 1 1
我想計算不同銀行的出現次數,並在FinalTable中設置值。
您可以將UNION ALL
與條件聚合一起使用:
SELECT BankName,
COUNT(CASE WHEN src = 'Bank' THEN 1 END) AS BankCount,
COUNT(CASE WHEN src = 'ATM' THEN 1 END) AS ATMCount,
COUNT(CASE WHEN src = 'Mitra' THEN 1 END) AS MitraCount,
COUNT(*) AS TotalCount
FROM (
SELECT BankName, 'Bank' AS src
FROM BankTable
UNION ALL
SELECT BankName, 'ATM' AS src
FROM ATMTable
UNION ALL
SELECT BankName, 'Mitra' AS src
FROM MitraTable) AS t
GROUP BY BankName
字段src
用於將源表返回到使用UNION ALL
操作結果的外部查詢。 使用此字段,我們可以執行條件聚合 ,以便計算每個源表中每個存儲庫的出現。
嘗試這個:
SELECT BankName,
SUM(BankCount) AS BankCount,
SUM(ATMCount) AS ATMCount,
SUM(MitraCount) AS MitraCount,
SUM(BankCount + ATMCount + MitraCount) AS TotalCount
FROM (SELECT BankName,
COUNT(ErrorCode) AS BankCount,
0 AS ATMCount,
0 AS MitraCount
FROM BankTable
GROUP BY BankName
UNION
SELECT BankName,
0 AS BankCount,
COUNT(ErrorCode) AS ATMCount,
0 AS MitraCount
FROM ATMTable
GROUP BY BankName
UNION
SELECT BankName,
0 AS BankCount,
0 AS ATMCount,
COUNT(ErrorCode) AS MitraCount
FROM MitraTable
GROUP BY BankName
) AS A
GROUP BY BankName;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.