Achei muito interessante... e pode ser muito útil em algum momento
para um de nos que trabalhamos com Tabelas temporária, tanto para
virar dados(pivot).. trata-se do CTE (Common Table Expression) é um
novo recurso fornecido pela Microsoft SQL Server 2005. No mundo real,
que muitas vezes precisam de consulta de dados hierárquica do banco de
dados. Por exemplo, para obter uma lista de lista hierárquica de todos
os funcionários, a lista de categorias de produtos, etc CTE cumpre este
requisito fazendo uma consulta recursiva.
Gostei muito desse exemplo, copie/cole e rode:
Gostei muito desse exemplo, copie/cole e rode:
--------------------------------------------------------------------------
DECLARE @Mes INT ,@Ano INT
SELECT @Mes = 10 ,@Ano = 2010;
WITH CTE (Data) AS
(
SELECT DATEADD(year, @Ano - 1900, DATEADD(month, @Mes - 1, 0))
UNION ALL
SELECT Data+1
FROM CTE
WHERE MONTH(Data + 1) = @Mes
)
SELECT
[1] AS [Domingo]
, [2] AS [Segunda-Feira]
, [3] AS [Terça-Feira]
, [4] AS [Quarta-Feira]
, [5] AS [Quinta-Feira]
, [6] AS [Sexta-Feira]
, [7] AS [Sábado]
FROM (
SELECT DAY(Data) AS Dia,
DATEPART(weekday, Data) DiaSemana,
DATEPART(week, Data) Semana
FROM CTE
) AS Datas
PIVOT
(
MAX(Dia) FOR DiaSemana
IN ([1], [2], [3], [4], [5], [6], [7]) ) AS A
--select * from CTE
Nenhum comentário:
Postar um comentário