PIVOT

09/04/2007 - 16:42 por Alejandro.33.Chile | Informe spam
Estimados.
Tengo lo siguiente:
TABLA CONTADOR

PORTAL dbo

pagina varchar no 200
fecha datetime no 8

Los datos que contiene son mas o menos asi:

pagina.asp 01/01/2007 14:30
pagina.asp 01/01/2007 14:31
index.asp 01/01/2007 14:35

Deseo hacer un pivot pero con el ejemplo que tengo se me cae el SP

Agradeceria su ayuda.



SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO



fecha', 'count(fecha)','pagina','contador.dbo.portal'


alter PROCEDURE PIVOT
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS

select @select
select @sumfunc
select @pivot
select @table

DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF

EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + '
WHERE 1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' +
@table + ' WHERE '
+ @pivot + ' Is Not Null')

SELECT @sql='', @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )

SELECT @delimÊSE Sign( CharIndex('char', data_type)
+CharIndex('date', data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'

SELECT @sql=@sql + '''' + convert(varchar(100), [pivot]) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + '
WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', '
FROM ##pivot

DROP TABLE ##pivot

SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', '
+ @sql + ' ')

EXEC (@select)
SET ANSI_WARNINGS ON




GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
 

Leer las respuestas

#1 Alejandro Mesa
09/04/2007 - 18:00 | Informe spam
,

Que significa que se te cae el sp?


AMB


"" wrote:

Estimados.
Tengo lo siguiente:
TABLA CONTADOR

PORTAL dbo

pagina varchar no 200
fecha datetime no 8

Los datos que contiene son mas o menos asi:

pagina.asp 01/01/2007 14:30
pagina.asp 01/01/2007 14:31
index.asp 01/01/2007 14:35

Deseo hacer un pivot pero con el ejemplo que tengo se me cae el SP

Agradeceria su ayuda.



SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO



fecha', 'count(fecha)','pagina','contador.dbo.portal'


alter PROCEDURE PIVOT
@select varchar(8000),
@sumfunc varchar(100),
@pivot varchar(100),
@table varchar(100)
AS

select @select
select @sumfunc
select @pivot
select @table

DECLARE @sql varchar(8000), @delim varchar(1)
SET NOCOUNT ON
SET ANSI_WARNINGS OFF

EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + '
WHERE 1=2')
EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' +
@table + ' WHERE '
+ @pivot + ' Is Not Null')

SELECT @sql='', @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' )

SELECT @delimÊSE Sign( CharIndex('char', data_type)
+CharIndex('date', data_type) )
WHEN 0 THEN '' ELSE '''' END
FROM tempdb.information_schema.columns
WHERE table_name='##pivot' AND column_name='pivot'

SELECT @sql=@sql + '''' + convert(varchar(100), [pivot]) + ''' = ' +
stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + '
WHEN '
+ @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', '
FROM ##pivot

DROP TABLE ##pivot

SELECT @sql=left(@sql, len(@sql)-1)
SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', '
+ @sql + ' ')

EXEC (@select)
SET ANSI_WARNINGS ON




GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


Preguntas similares