Я использую Рекурсивный CTE Я нашел here получить даты в диапазоне:Report Builder бросает ошибка над типами несовпадения в рекурсивном КТР
WITH T(d)
AS
(
SELECT @DateFrom
UNION ALL
SELECT CAST(DateAdd(DD,1,T.d) AS DATETIME) FROM T WHERE T.d < @DateTo
)
SELECT d FROM T OPTION (MAXRECURSION 32767);
Этот КТР работает отлично на моем SQL Server, но когда пытаясь создать набор данных с этим запросом в Report Builder 3.0 я получаю Определить параметры запроса диалога (который я обычно gon't получить) и после нажатия ОК, я получаю ошибку: Types don't match between the anchor and the recursive part in column "d" of recursive query "T".
Я знаю DATEADD
возвращается SMALLDATETIME
, и я, хотя Report Builder передает DATETIME
в @DateFrom
, поэтому я подумал, что CASTing возвращаемое значение DATEADD
на DATETIME
решит его, но это не так.
Что мне здесь не хватает?
Спасибо! Это сделал трюк. Вы знаете, каков тип параметра даты, отправленного построителем отчетов? Это явно не DATETIME ... – OzW
И после литья @DateFrom в анкерной части мне даже не нужен бросок в рекурсивной части. – OzW
@OzW, если вы видите свойства параметра, у него есть только один параметр даты. Я думаю, что это не похоже на тип datetime SQL Server. – KrazzyNefarious