[英]Multiple Counts (of transaction type) in single SQL Query
因此,我有一个用于企业所有交易的表格,非常简单,它有一个付款方式列,该列列出了如何进行所有交易(现金,贷方或借方)。
我想要做的是使用查询创建两列,该列计算出每笔交易的完成方式,一列是现金,另一列是Card,其中包括所有的信用卡和借记卡购买。
这是我到目前为止的内容:
SELECT COUNT (*) as CashTransactions
FROM Transaction
WHERE PaymentMethod='Cash'
我想要的输出是
Cash Transactions | Card Transactions
(Count of Cash) | (Count of Credit AND Debit)
这里有几个选择。 我强烈建议选择一种,它更清洁,更快。
选项1 :
SELECT PaymentMethod, COUNT(*) AS NumberOfTransactions
FROM Transaction
GROUP BY PaymentMethod
导致:
PaymentMethod | NumberOfTransactions
------------------------------------
Cash | 33
Credit | 12
Debit | 87
或选项2 :
SELECT (
SELECT COUNT(*) AS NumberOfTransactions
FROM Transaction
WHERE PaymentMethod = 'Cash'
) as CashTransactions,
(
SELECT COUNT(*) AS NumberOfTransactions
FROM Transaction
WHERE NOT PaymentMethod = 'Cash'
) as OtherTransactions
导致:
CashTransactions| OtherTransactions
------------------------------------
33 | 99
如果使用SQL Server,则可以尝试以下查询:
SELECT
SUM(CASE WHEN PaymentMethod='Cash' THEN 1 ELSE 0 END) as CashTransaction,
SUM(CASE WHEN PaymentMethod IN ('Credit','Debit') THEN 1 ELSE 0 END) as CardTransaction
FROM Transaction
但是,如果在查询中使用ms-access,则可以尝试以下查询:
SELECT sum(IIF(PaymentMethod='Cash',1,0)) as CashTransaction, sum(IIF(PaymentMethod in ('Credit','Debit'),1,0)) as CardTransaction
FROM Transaction;
只是总结而不是计数:
SELECT
ABS(SUM(PaymentMethod = 'Cash')) AS CashTransactions,
ABS(SUM(PaymentMethod <> 'Cash')) AS CardTransactions
FROM
Transaction
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.