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

Preguntas similare

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


Respuesta Responder a este mensaje
#2 Camilo Acosta
09/04/2007 - 22:34 | Informe spam
Debes estar usando sql 2005, donde la palabra Pivot es un nombre reservado.
Cambia en el procedimiento el nombre de la tabla ##pivot por otro
cualquiera, ej. ##pivotA

Saludos,


escribió en el mensaje
news:
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

Respuesta Responder a este mensaje
#3 Alejandro.33.Chile
09/04/2007 - 22:39 | Informe spam
Disculpame.
Al Presionar F5 sale el siguiente error:

Servidor: mensaje 170, nivel 15, estado 1, línea 1
Línea 1: sintaxis incorrecta cerca de 'SELECT Fecha From
contador.dbo.portal GROUP BY fecha'.

Gracias.
Alejandro
Respuesta Responder a este mensaje
#4 Alejandro.33.Chile
09/04/2007 - 22:40 | Informe spam
Hola.
Uso SQL 2000.

Gracias.
Respuesta Responder a este mensaje
#5 Jose Mariano Alvarez
10/04/2007 - 00:46 | Informe spam
En el post ,
DIJO .
Hola.
Uso SQL 2000.

Gracias.




El -- solo aplica el comentario a lo que esta detras de el en la misma
linea y no en la linea siguiente.



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)


IMPORTANTE

Por favor traten de indicar la versión de SQL y Service Pack.
La inclusión de (CREATE, INSERTS, etc.) para poder reproducir el
problema también ayuda.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida