2017-02-05 21 views
0

У меня есть данные в MySQL, например:Visual Studio 2015 Report Designer вложенных данные

+----+----------+--------+ 
| 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 и отобразить в таблице.

ответ

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 | 
+0

Проблема с CONCAT является то, что съедает восток/запад недвижимости. Это текущая проблема с приложением, которое я переписываю. Если я получу слишком много уникальных дефектов, он не поместится на странице. Я бы скорее попытался сделать север/юг, тогда это просто еще одна страница. Спасибо за предложение. – James

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 groupsample report

 Смежные вопросы

  • Нет связанных вопросов^_^