因此,我使用MySQL进行查询,并拥有如下数据库:
我想做一个select
查询,根据它们的前缀显示银行A和C的每一个事务。这是预期的结果:
我按以下方式进行了查询:
SELECT
M.merk AS 'Merk',
COUNT( T.amount ) AS 'Jumlah Transaksi',
SUM( T.amount ) AS 'Total Amount'
FROM
tb_transaksiatm T
INNER JOIN tb_issuer I ON
T.nomor_kartu LIKE CONCAT(I.prefix, '%')
INNER JOIN tb_terminalatm M ON
T.terminal = M.nomor_terminal
WHERE
I.bank IN ('A', 'C') # Declare the Bank;
但我的结果和预期不一样。它将A银行和C银行的两行合并起来,这是我的结果:
问题是,如何将WHERE IN
条件分成两行?任何帮助都将不胜感激。谢谢。
注:语言为印尼语。
发布于 2022-06-28 08:45:23
SELECT
M.merk AS 'Merk',
COUNT( T.amount ) AS 'Jumlah Transaksi',
SUM( T.amount ) AS 'Total Amount'
FROM
tb_transaksiatm T
INNER JOIN tb_issuer I ON
T.nomor_kartu LIKE CONCAT(I.prefix, '%')
INNER JOIN tb_terminalatm M ON
T.terminal = M.nomor_terminal
WHERE
I.bank IN ('A', 'C') # Declare the Bank
group by M.merk;
发布于 2022-06-28 08:50:25
当使用聚合函数(如SUM或COUNT )而不指定GROUP BY时,它将将所有行聚合在一起。在被聚合的行之间可能有所不同的字段(如M.Merk )将从正在聚合的任意行中获取一个值,尽管mysql的现代版本默认为ONLY_FULL_GROUP_BY模式,在该模式中,选择这样的字段将导致错误而不是任意值。
听起来你想要一个GROUP BY I.Bank, M.Merk
,但是你没有把银行包括在你选择的字段中是令人困惑的。
https://stackoverflow.com/questions/72790281
复制相似问题