Minha pergunta está relacionada a essas 2 perguntas:
- https://stackoverflow.com/questions/17529860/how-to-list-all-dates-between-two-dates/27319120
- https://stackoverflow.com/questions/1378593/get-a-list-of-dates-between-two-dates-using-a-function
No entanto, no meu caso, tenho uma tabela com as colunas ID,StartDate,EndDate e quero aplicar a mesma abordagem (mas em vez de 2 dias, quero usar a tabela inteira).
E antes de entrar nas funções, eu queria ver se isso é possível com uma tabela de dimensões de seleção e data.
Basicamente, quero escalar isso para a tabela inteira:
SELECT
t.Id
,dd.[Date]
FROM dbo.DateDimension dd
,dbo.T1 t
WHERE
t.Id = 957
and dd.Date>=t.StartDate and dd.Date <= t.EndDate
Eu tenho dados de amostra + saída desejada (a instrução Select) aqui:
www.sqlfiddle.com/#!18/0e389/2
Provavelmente há algo que não entendo na sua pergunta, mas pelo que parece, tudo o que você precisa fazer é remover o
t.id = ?
predicadoBETWEEN
.No seu exemplo no violino, você produz 3 id's. Se você deseja apenas um subconjunto, pode usar um predicado IN:
Acredito que você esteja procurando o seguinte, aproveitando o TFV de sua segunda referência:
Para cada linha em t, o TVF será chamado e produzirá uma linha para cada registro nos resultados do TVF.
Sem usar uma tabela, obtenha a data em tempo real sem usar o cursor.