Visual Studio 2015报表设计器嵌套数据

时间:2017-02-05 05:07:29

标签: mysql vb.net visual-studio-2015 reporting

我在MySQL中有数据,例如:

+----+----------+--------+
| Id | grade    | defect |
+----+----------+--------+
| 1  | Grade #2 | dented |
+----+----------+--------+
| 1  | Grade #3 |        |
+----+----------+--------+
| 1  | Grade #4 | dented |
+----+----------+--------+
| 1  | Grade #5 |        |
+----+----------+--------+
| 1  | Grade #4 | short  |
+----+----------+--------+
| 1  | Grade #5 |        |
+----+----------+--------+
| 1  | Grade #1 | short  |
+----+----------+--------+
| 1  | Grade #6 |        |
+----+----------+--------+
| 1  | Grade #2 | broken |
+----+----------+--------+
| 1  | Grade #2 | long   |
+----+----------+--------+
| 1  | Grade #3 |        |
+----+----------+--------+

我想在Visual Studio报表设计器中创建报表。我可以创建一些查询并生成如下报告:

+----------------------+
| Grade          Count |
+----------------------+
| Grade #1       1     |
+----------------------+
| Grade #2       3     |
+----------------------+
| Grade #3       2     |
+----------------------+
| Grade #4       2     |
+----------------------+
| Grade #5       2     |
+----------------------+
| Grade #6       1     |
+----------------------+
| Total          11    |
+----------------------+
|                      |
+----------------------+
| Defect         Count |
+----------------------+
| dented         2     |
+----------------------+
| short          2     |
+----------------------+
| broken         1     |
+----------------------+
| long           1     |
+----------------------+
| Total          6     |
+----------------------+

但是,我想要更像这样的东西:

+-----------------------------+
| Grade                 Count |
+-----------------------------+
| Grade #1              1     |
+-----------------------------+
|     Short                   |
+-----------------------------+
| Grade #2              3     |
+-----------------------------+
|     dented                  |
+-----------------------------+
|     broken                  |
+-----------------------------+
|     long                    |
+-----------------------------+
| Grade #3              2     |
+-----------------------------+
| Grade #4              2     |
+-----------------------------+
|     dented                  |
+-----------------------------+
|     short                   |
+-----------------------------+
| Grade #5              2     |
+-----------------------------+
| Grade #6              1     |
+-----------------------------+
| Total                 11    |
+-----------------------------+

我确信这是可能的,但我不确定该怎么做。有人能指出我正确的方向吗?我再次使用visual studio 2015,mysql,vb.net和报表设计器。我看到提到团体,孩子/父母等,但我无法看到一种方法来完成这项工作。提前致谢。哎呀,现在我很乐意在mysql中进行查询并显示在表格中。

2 个答案:

答案 0 :(得分:0)

MySQL的GROUP_CONCAT()可以为您提供包含所需信息的内容,但不是输出的确切格式:

SELECT grade,
       COUNT(*) AS defect_count,
       GROUP_CONCAT(COALESCE(defect, '')) AS defects
FROM yourTable
GROUP BY grade

<强>输出:

Grade #1 | 1 | short
Grade #2 | 3 | dented, broken, long
Grade #3 | 2 |
Grade #4 | 2 | dented, short
Grade #5 | 2 |
Grade #6 | 1 |

答案 1 :(得分:0)

这就是我提出的问题:

SELECT 
Grade,
SUM(Plated) AS Plated,
SUM(iF(Reject_Reason <> "", 1, 0)) AS Rejects,
Reject_Reason AS `Name`,
COUNT(Reject_Reason) As `Count`
 FROM
sorting.data
WHERE
job_name = @JobName
GROUP BY Grade, Reject_Reason

这让我很接近,其余的都是在报告设计师中完成的。我添加了一个儿童组。我很高兴它的出现方式。看样本报告,忽略数据,我只是扔了一些东西。

Report setup, child group sample report