Если бы я где вы, я бы изменил ваш SQL-оператор, добавив что-то вроде следующего:
WITH DateTable
AS
(
SELECT CAST((GETDATE() - 180) as Date) AS [DATE]
UNION ALL
SELECT DATEADD(dd, 1, [DATE]) FROM DateTable
WHERE DATEADD(dd, 1, [DATE]) < cast(GETDATE() as Date)
)
Приведенное выше создает временную таблицу со всеми датами за последние 180 дней. Затем добавьте новую строку, чтобы выбрать столбец «ДАТА» из этой таблицы в запрос SQL:
SELECT "DateTable"."DATE", ....
Затем после операторов SELECT используйте CROSS JOIN для объединения двух таблиц
CROSS JOIN "DateTable"
Это берет вас из результатов запроса, которые выглядят так:
OrderNum DueDate CompletedDate
1 01/01/01 01/02/01
2 01/01/01 01/01/01
3 01/02/01 01/03/01
4 01/02/01 01/02/01
Для запроса результатов, которые выглядят так:
OrderNum DueDate CompletedDate Date
1 01/01/01 01/02/01 01/01/01
2 01/01/01 01/01/01 01/01/01
3 01/02/01 01/03/01 01/01/01
4 01/02/01 01/02/01 01/01/01
1 01/01/01 01/02/01 01/02/01
2 01/01/01 01/01/01 01/02/01
3 01/02/01 01/03/01 01/02/01
4 01/02/01 01/02/01 01/02/01
1 01/01/01 01/02/01 01/03/01
2 01/01/01 01/01/01 01/03/01
3 01/02/01 01/03/01 01/03/01
4 01/02/01 01/02/01 01/03/01
Теперь вы можете использовать простое заявление о выборе записи Crystal, чтобы сократить результаты только до тех, которые открыты в эти дни:
{Ticket Open Date} < {Command.DATE} and
{Ticket Close Date} > {Command.DATE}
Теперь у вас есть одни и те же линии деталей в нескольких группах. Надеюсь, это поможет, П.С. если бы у меня было больше информации о вашем запросе или структуре таблицы, я мог бы быть более конкретным.