繁体   English   中英

单个SQL查询中的多个计数(事务类型)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM