C# MySql上的高级过滤结果

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上添加了“焦炭”。如何显

我想用下面显示的代码显示每个客户所有项目的总和,但它只显示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;