2013-07-15 3 views
1

Я пытаюсь настроить отчет на основе нескольких таблиц.Как сгенерировать этот отчет?

У меня есть таблица Actual который выглядит следующим образом:

+--------+------+ 
| status | date | 
+--------+------+ 
| 5  | 7/10 | 
| 8  | 7/9 | 
| 8  | 7/11 | 
| 5  | 7/18 | 
+--------+------+ 

Таблица Targets выглядит следующим образом:

+--------+-------------+--------+------------+ 
| status | weekEndDate | target | cumulative | 
+--------+-------------+--------+------------+ 
|  5 | 7/12  |  4 |   45 | 
|  5 | 7/19  |  5 |   50 | 
|  8 | 7/12  |  4 |   45 | 
|  8 | 7/19  |  5 |   50 | 
+--------+-------------+--------+------------+ 

Группировка Actual записей, по которым Targets.weekEndDate они попадают под землей, у меня есть следующий агрегат запрос GroupActual:

+-------------+------------+--------------+--------+------------+ 
| weekEndDate | status | weeklyTarget | actual | cumulative | 
+-------------+------------+--------------+--------+------------+ 
| 7/12  | 5   |   4 |  1 |   45 | 
| 7/12  | 8   |   4 |  2 |   41 | 
| 7/19  | 5   |   5 |  1 |   50 | 
| 7/19  | 8   |   4 |  |   45 | 
+-------------+------------+--------------+--------+------------+ 

Я пытаюсь создать этот отчет:

+--------+------------+------+------+ 
| status | category | 7/12 | 7/19 | ...etc for every weekEndDate entry in Targets 
+--------+------------+------+------+ 
| 5  | actual  | 1 | 1 | 
| 5  | target  | 4 | 5 | 
| 5  | cumulative | 45 | 50 | 
+--------+------------+------+------+ 
| 8  | actual  | 2 |  | 
| 8  | target  | 4 | 5 | 
| 8  | cumulative | 45 | 50 | 
+--------------+------+------+------+ 

я могу использовать перекрестный запрос, чтобы сделать столбцы даты, но я не знаю, как есть строки для «реальной», «цели», и «кумулятивный». Они не являются значениями в одной таблице, что означает (я думаю), что запрос кросс-таблицы не будет полезен для этого разбиения. Должен ли я попытаться изменить GroupActual так, чтобы он помещал данные в форму, которую я ищу? Вид смущения относительно того, куда идти дальше с этим ...

EDIT: Я сделал некоторый прогресс на перекрестках в соответствии с решением PowerUser, но у меня проблемы с Target. Я изменил созданный вами мастер SQL, пытаясь получить то, что хочу, но он не работает. Я использовал версию GroupActual, которая имеет только weekEndDate, status и weeklyTarget; here are the SQL:

TRANSFORM weeklyTarget 
SELECT status 
FROM TargetStatus_forCrosstab_Target 
GROUP BY status,weeklyTarget 
PIVOT Format([weekEndDate],"Short Date"); 
+0

Имею ли я это право; вам нужен Actual из запроса GroupActual, а Target и Cumulative из таблицы Targets? –

+0

@JohnnyBones, да, для каждой даты и статуса в «Цели» Мне нужно узнать, сколько фактических записей с этим статусом имеет дату в течение недели до этой даты, которую я сделал с помощью «GroupActual». Сложная часть - получение фактических подсчетов в одной строке и целей в следующем. – sigil

ответ

1

Вы почти у цели. Проблема в том, что вы не можете сделать все это в одной кросс-таблице. Вам нужно сделать 3 кросс-таблицы (один для «фактического», один для «цели» и один для «кумулятивного»), затем сделайте запрос Союза, чтобы объединить их все.

Дополнительный совет: в ваших индивидуальных кросс-таблицах добавьте столбец сортировки. Ваша «фактическая» кросс-таблица будет иметь значение «Сорт» 1, «Цель» будет иметь значение «Сорт» 2, а «Кумулятивный» будет иметь 3. Таким образом, когда вы объединяете их вместе, вы можете получить их все в правильном порядке ,

+0

У меня есть кросс-таблица для «Actual», но у меня проблемы с «Target», потому что эти значения не нужно суммировать - их нужно просто разложить на каждый столбец даты, сгруппированный по статусу. Я отправлю SQL выше. – sigil

+0

Ничего, я понял. Использование суммы работало нормально, потому что я группирую на основе 'weekEndDate', и есть только одно значение за дату. – sigil

+0

Точно. Я пытался подумать, как это сказать. Рад помочь. – PowerUser

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