O MS SQL Server tem funções geradoras de séries (também conhecidas como generate_series) como o Postgresql tem. Se não, existe uma maneira básica de implementar a função? A versão do carimbo de data/hora é preferida
Encontrei esta pergunta que é antiga. Talvez haja uma solução melhor em novas versões.
A partir do SQL Server 2022 você poderá fazer
No SQL Bits, foi declarado que também suportará datas e números.
Na visualização pública do SQL Server 2022 (CTP2.0) existem alguns elementos muito promissores e outros menos. Espero que os aspectos negativos possam ser abordados antes do lançamento real.
✅ Tempo de execução para geração de números O abaixo gera 10.000.000 números em 700 ms na minha VM de teste (a atribuição a uma variável remove qualquer sobrecarga de envio de resultados para o cliente)
✅ Estimativas de cardinalidade
É simples calcular quantos números serão retornados do operador e o SQL Server aproveita isso conforme mostrado abaixo.
❌ Proteção desnecessária de Halloween
O plano para a inserção abaixo tem um spool completamente desnecessário - presumivelmente, já que o SQL Server não tem lógica para determinar que a origem das linhas não é potencialmente o destino.
Ao inserir em uma tabela com um índice clusterizado em Número, o spool pode ser substituído por uma classificação (que também fornece a separação de fases)
❌ Classificações desnecessárias
O abaixo retornará as linhas em ordem de qualquer maneira, mas o SQL Server aparentemente ainda não possui as propriedades definidas para garantir isso e aproveitá-lo no plano de execução.
Aaron Bertrand indica que esses dois últimos pontos estão no radar para serem corrigidos.
Um método bastante comum de criar uma série em T-SQL consiste em usar um CTE como fonte, algo como:
A consulta acima retornará uma lista ordenada de valores de 0 a 99.
Para datas, você pode implementá-lo assim:
Que fornece uma lista de datas começando em 1º de janeiro de 2019 e continuando por 100 dias, terminando em 10 de abril de 2019.
Existem inúmeras outras maneiras de gerar um conjunto como este, incluindo a geração de uma tabela de "números" .
Sim a partir do SQL Server 2022
Antes disso, o rastreamento no fórum de comentários do SQL Server estava disponível nesta postagem e nesta postagem .