Мне нужна помощь в написании запроса T-SQL, который сгенерирует 52 строки данных для франшизы из таблицы, которая часто будет содержать пропуски в последовательности 52 недели для франшизы (т. Е. Франшиза могла сообщать данные раз в две недели или не был в бизнесе целый год).
Таблица, к которой я обращаюсь, выглядит примерно так:
FranchiseId | Date | ContractHours | PrivateHours
и мне нужно присоединить его к таблице, подобной этой:
FranchiseId | Name
Вывод запроса должен выглядеть следующим образом:
Name | Date | ContractHours | PrivateHours
---- ---------- ------------- ------------
AZ1 08-02-2011 292 897
AZ1 07-26-2011 0 0 -- default to 0's for gaps in sequence
...
AZ1 08-03-2010 45 125 -- row 52 for AZ1
AZ2 08-02-2011 382 239
...
AZ2 07-26-2011 0 0 -- row 52 for AZ2
Мне нужен этот стиль вывода для каждой франшизы, то есть 52 строки данных со строками по умолчанию для любых пропусков в последовательности 52 недели в одном наборе результатов. Таким образом, если имеется 100 франшиз, результирующий набор должен быть 5200 строк.
Что я пробовал
Я попробовал типичные предложения:
- Создать таблицу со всеми возможными датами
- LEFT OUTER Присоедините это к таблице необходимых данных
Проблемы, с которыми я сталкиваюсь:
- гарантирует, что для каждой франшизы их 52 строки и
заполнение пробелов названием франшизы и 0 часами, не могу
иметь следующее в наборе результатов:
Name | Date | ContractHours | PrivateHours
---- ---------- ------------- ------------
NULL 08-02-2011 NULL NULL
Я не знаю, куда идти отсюда? Есть ли эффективный способ написания запроса T-SQL, который будет производить требуемый вывод?