Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

: Insertar en una tabla desde una consulta con with

Estas en el tema de : Insertar en una tabla desde una consulta con with en el foro de SQL Server en Foros del Web. Amigos tengo esta consulta, estoy usando el SQLSERVER2005: ahi va: tengo esta consulta (desde el with) pero no me funciona cuando le pongo el insert ...
  #1 (permalink)  
Antiguo 01/06/2011, 13:55
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 12 años, 10 meses
Puntos: 0
: Insertar en una tabla desde una consulta con with

Amigos tengo esta consulta, estoy usando el SQLSERVER2005:

ahi va:
tengo esta consulta (desde el with) pero no me funciona cuando le pongo el insert en la primera linea.

--Insert into tabla2

WITH OrdFN AS
(
SELECT id, nombre,apellidos, edad, grupo,
ROW_NUMBER() OVER(PARTITION BY GRUPO ORDER BY EDAD) AS FilNum,
COUNT(*) OVER(PARTITION BY GRUPO) AS Cnt
FROM dbo.PRUEBA2
)
SELECT GRUPO, AVG(EDAD) AS Median
FROM OrdFN
WHERE FilNum IN((Cnt + 1) / 2, (Cnt + 2) / 2)
GROUP BY GRUPO;

pero lo que quiero es insertarla los resultados en otra tabla y me sale ERROR "Sintaxis incorrecta cerca de 'OrdFN'." pero la selección desde el with me sale bien... que puede estar fallando? o que estoy haciendo mal?

gracias.
  #2 (permalink)  
Antiguo 01/06/2011, 15:06
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: : Insertar en una tabla desde una consulta con with

INSERT INTO tutabla
FROM (
................. toda tu instruccion................... )
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 01/06/2011, 15:56
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: : Insertar en una tabla desde una consulta con with

Cita:
Iniciado por iislas Ver Mensaje
INSERT INTO tutabla
FROM (
................. toda tu instruccion................... )
ME SALE ESTE ERROR :(

Mens. 156, Nivel 15, Estado 1, Línea 2
Sintaxis incorrecta cerca de la palabra clave 'from'.
Mens. 319, Nivel 15, Estado 1, Línea 3
Sintaxis incorrecta junto a la palabra clave 'with'. Si esta instrucción es una expresión de tabla común o una cláusula xmlnamespaces, la instrucción anterior debe terminarse con punto y coma (;).
Mens. 102, Nivel 15, Estado 1, Línea 14
Sintaxis incorrecta cerca de ')'.
  #4 (permalink)  
Antiguo 01/06/2011, 16:10
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: : Insertar en una tabla desde una consulta con with

A lo que se refiere iislas es utilizar la sintaxis

Código:
INSERT INTO tutabla
SELECT GRUPO, AVG(EDAD) AS Median
FROM (
SELECT id, nombre,apellidos, edad, grupo,
ROW_NUMBER() OVER(PARTITION BY GRUPO ORDER BY EDAD) AS FilNum,
COUNT(*) OVER(PARTITION BY GRUPO) AS Cnt
FROM dbo.PRUEBA2 )
En cualquier caso (ahora no recuerdo si es obligatorio) al WITH le falta la definición de los campos, por ejemplo

Código:
WITH OrdFN (id, nombre,apellidos, edad, grupo) AS
(
SELECT id, nombre,apellidos, edad, grupo ...
...
Saludos
  #5 (permalink)  
Antiguo 02/06/2011, 10:08
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: : Insertar en una tabla desde una consulta con with

he probado esto y me sale el bendito error.

Cita:

insert into MITABLA
(
WITH OrdFN (id, nombre,apellidos, edad, grupo, filnum, cnt) as
(
SELECT id, nombre,apellidos, edad, grupo,
ROW_NUMBER() OVER(PARTITION BY GRUPO ORDER BY EDAD) AS FilNum,
COUNT(*) OVER(PARTITION BY GRUPO) AS Cnt
FROM dbo.PRUEBA2
)
SELECT GRUPO, AVG(EDAD) AS Median
FROM OrdFN
WHERE FilNum IN((Cnt + 1) / 2, (Cnt + 2) / 2)
GROUP BY GRUPO
);
EL ERROR :(
Cita:
Mens. 102, Nivel 15, Estado 1, Línea 1
Sintaxis incorrecta cerca de ';'.
Mens. 319, Nivel 15, Estado 1, Línea 3
Sintaxis incorrecta junto a la palabra clave 'with'. Si esta instrucción es una expresión de tabla común o una cláusula xmlnamespaces, la instrucción anterior debe terminarse con punto y coma (;).
Mens. 102, Nivel 15, Estado 1, Línea 14
Sintaxis incorrecta cerca de ')'.
  #6 (permalink)  
Antiguo 02/06/2011, 15:12
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: : Insertar en una tabla desde una consulta con with

que tal asi..

Código:
WITH OrdFN (id, nombre,apellidos, edad, grupo, filnum, cnt) as
(
        SELECT id, nombre,apellidos, edad, grupo,
        ROW_NUMBER() OVER(PARTITION BY GRUPO ORDER BY EDAD) AS FilNum,
        COUNT(*) OVER(PARTITION BY GRUPO) AS Cnt
        FROM dbo.PRUEBA2
)

insert into MITABLA
SELECT GRUPO, AVG(EDAD) AS Median
FROM OrdFN
WHERE FilNum IN((Cnt + 1) / 2, (Cnt + 2) / 2)
GROUP BY GRUPO
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.

Etiquetas: cte, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:06.