C# MySql上的高级过滤结果
我想用下面显示的代码显示每个客户所有项目的总和,但它只显示1个项目 MySql数据 会计报表 cust_id cust_name cust_group 1001 Customer A normal 1002 Customer B vip 1003 Customer C normal 结果是1001上只有2个项目,我怀疑1002上添加了“焦炭”。如何显示每个客户的每个细节项的总数量C# MySql上的高级过滤结果,c#,mysql,C#,Mysql,我想用下面显示的代码显示每个客户所有项目的总和,但它只显示1个项目 MySql数据 会计报表 cust_id cust_name cust_group 1001 Customer A normal 1002 Customer B vip 1003 Customer C normal 结果是1001上只有2个项目,我怀疑1002上添加了“焦炭”。如何显
谢谢。只需按用户和项目汇总即可:
SELECT
a.cust_id,
t.trans_details,
SUM(t.trans_volume) AS total_volume
FROM Acct_Table a
INNER JOIN Trans_Table t
ON a.cust_id = t.cust_id
GROUP BY
a.cust_id,
t.trans_details;
但这种方法有一个缺点,即结果只包含数据中实际出现的用户/项目组合的计数。如果您想要一个显示所有用户和所有项目的报告,即使交易量为零,那么我们需要做更多的工作:
SELECT
a.cust_id,
t.trans_details,
COALESCE(SUM(t.trans_volume), 0) AS total_volume
FROM Acct_Table a
CROSS JOIN (SELECT DISTINCT trans_details FROM Trans_Table) td
LEFT JOIN Trans_Table t
ON a.cust_id = t.cust_id AND
td.trans_details = t.trans_details
GROUP BY
a.cust_id,
td.trans_details
ORDER BY
a.cust_id,
td.trans_details;
这种数据格式更适合于绘图(我认为),因为它是规则的,显示每一位客户和每一个可能的项目,以及每一对的数量总和。您应该在这里向我们显示您期望的确切输出。我想得到的结果是:1001牛奶2、啤酒1、咖啡1、可乐1;1002焦炭1;1003瓶装水1。我希望这些数据能显示在图表上谢谢@Tim Biegeleisen,现在数据显示了适当的结果。我将在日期和组上添加筛选器。
SELECT
a.cust_id,
t.trans_details,
SUM(t.trans_volume) AS total_volume
FROM Acct_Table a
INNER JOIN Trans_Table t
ON a.cust_id = t.cust_id
GROUP BY
a.cust_id,
t.trans_details;
SELECT
a.cust_id,
t.trans_details,
COALESCE(SUM(t.trans_volume), 0) AS total_volume
FROM Acct_Table a
CROSS JOIN (SELECT DISTINCT trans_details FROM Trans_Table) td
LEFT JOIN Trans_Table t
ON a.cust_id = t.cust_id AND
td.trans_details = t.trans_details
GROUP BY
a.cust_id,
td.trans_details
ORDER BY
a.cust_id,
td.trans_details;