У меня есть отчет, который отображает месячные данные от начала проекта до текущего месяца для набора проектов. Когда проект не имеет данных в течение нескольких месяцев, он не отображается.Как заполнить данные за отсутствующие месяцы более 1 года
Мне нужно отобразить недостающие строки месяца для каждого проекта и показать 0 для этих строк.
Может быть создано 2 или более проектов (например, 100 проектов), для которых создается отчет. Начало проекта может быть из более ранних лет, например, 2014 год. Предположим, что текущий месяц - апрель 2016. Затем отчет должен отображать данные с 201401 по 20160 год. В приведенном ниже примере я использую месяц начала проекта как 201512.
Весь список месяцев хранится в таблице за месяц который содержит все месяцы. Начало проекта месяц (201512 и текущий месяц 201604 передается StoredProcedure в качестве параметров)
В настоящее время отчет выглядит следующим образом
=====================================
|ProjectNo | Period | Billing | WIP |
======================================
|00|201512 | 100 | 75 |
| |201601 | 200 | 100 |
--------------------------------------
|000145 |201512 | 100 | 75 |
| |201601 | 200 | 100 |
| |201602 | 250 | 110 |
| |201604 | 550 | 110 |
======================================
набор данных возвращаемой выглядит так (позволяет называть ResultSet как ProjectReportData)
=====================================
|ProjectNo | Period | Billing | WIP |
======================================
|00|201512 | 100 | 75 |
|00|201601 | 200 | 100 |
|000145 |201512 | 100 | 75 |
|000145 |201601 | 200 | 100 |
|000145 |201602 | 250 | 110 |
|000145 |201604 | 550 | 110 |
======================================
Как вы можете видеть 201602,201603 и 201604 не хватает для проекта Нет 000123. для проекта Нет 000145, 201603 месяц отсутствует.
Ожидаемый выход как этот
=====================================
|ProjectNo | Period | Billing | WIP |
======================================
|00|201512 | 100 | 75 |
| |201601 | 200 | 100 |
| |201602 | 0 | 0 |
| |201603 | 0 | 0 |
| |201604 | 250 | 110 |
--------------------------------------
|000145 |201512 | 100 | 75 |
| |201601 | 200 | 100 |
| |201602 | 250 | 110 |
| |201603 | 0 | 0 |
| |201604 | 550 | 110 |
======================================
Я пытался делать право присоединиться к ProjectReportData с таблицей месяцев, этого заполнит недостающие месяцы.
|ProjectNo | Period | Billing | WIP |
======================================
|00|201512 | 100 | 75 |
|00|201601 | 200 | 100 |
|NULL |201602 | NULL | NULL|
|NULL |201603 | NULL | NULL|
|NULL |201604 | NULL | NULL|
|000145 |201512 | 100 | 75 |
|000145 |201601 | 200 | 100 |
|000145 |201602 | 250 | 110 |
|NULL |201603 | NULL | NULL|
|000145 |201604 | 550 | 110 |
======================================
Но мне нужен ProjectNo также для заполнения вместо NULL.
Как я могу добиться этого. Пожалуйста, предложите.
Какой тип dbms вы используете? – jarlh
вы можете показать свое право присоединиться? – MtwStark
, пожалуйста, добавьте sql, который вы используете –