Я пытаюсь использовать Recursive CTE в sql, чтобы получить данные для каждого уникального идентификатора в таблице. Я читаю этот учебник , но не могу заставить мой код работать.
Мой логин c -
for each unique id in a table = currentId
select * from table
where
date between
max available date of that currentId
and
5 days before that max available date of that currentId
Я пытался сделать это
WITH cte_org AS (
SELECT * FROM shoes
UNION ALL
SELECT *
FROM cte_org
WHERE
CAST(startTime AS date)
BETWEEN DATEADD(DAY,-30, (select max(CAST(startTime as date)) from shoes where shoeId = cte_org.shoeId ) )
AND (select max(CAST(startTime as date)) from shoes where shoeId = cte_org.shoeId )
)
SELECT * FROM cte_org
Я получаю
SQL Ошибка 467 GROUP BY, HAVING или агрегатные функции недопустимы в рекурсивной части рекурсивного общего табличного выражения 'cte_org'
Любая помощь?
EDIT
ожидаемые результаты
for shoe id 1
time 14/1/2020 - color black
time 13/1/2020 - color yellow
time 12/1/2020 - color pink
time 11/1/2020 - color orange
time 10/1/2020 - color green
for shoe id 2
time 14/1/2020 - color white
time 13/1/2020 - color green
time 12/1/2020 - color black
time 11/1/2020 - color blue
time 10/1/2020 - color brown
for shoe id 3....etc
РЕДАКТИРОВАТЬ 2
id time color
1 14/1/2020 pink
2 14/1/2020 black
3 14/1/2020 orange