SQL - Me gustaria usar WITH antes de la consulta pero me salta error

 
Vista:
sin imagen de perfil
Val: 13
Ha aumentado su posición en 3 puestos en SQL (en relación al último mes)
Gráfica de SQL

Me gustaria usar WITH antes de la consulta pero me salta error

Publicado por borja (8 intervenciones) el 30/10/2018 16:50:08
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
DECLARE @cod_centro VARCHAR(2)
DECLARE @fec_annomes int
 
SET @cod_centro='MC'
SET @fec_annomes='201810'
 
 
WITH TH_Hospitalizacion AS
 
(
select @cod_centro, @fec_annomes, 225,count(* ),getdate()
from TH_Hospitalizacion t
where t.cod_centro = @cod_centro and year(t.fec_alta)*100+month(t.fec_alta) = @fec_annomes
and xti_excluido ='n' and xti_tipoProceso='H'
AND EXISTS (SELECT COD_EPISODIO FROM TH_TomaFormulario A WITH (NOLOCK)
INNER JOIN TH_ValorIndicadorTomaFormulario_2 B WITH (NOLOCK) ON A.cod_TomaFormulario = B.cod_TomaFormulario
AND B.COD_INDICADOR IN ('5913',
'10965',
'48128')
and des_ValorIndicador IN ('0','1','2','3','4','5','6','7','8','9', '10')
AND t.cod_Episodio=A.cod_Episodio
AND A.cod_centro=@cod_centro)
 
)


Este es el mensaje del error.

1
Sintaxis incorrecta junto a la palabra clave 'with'. Si esta instrucción es una expresión de tabla común, una cláusula xmlnamespaces o una cláusula de contexto de seguimiento de cambios, la instrucción anterior debe terminarse con punto y coma.

Si alguien sabe como solucionarlo lo agradecería bastante.

PD: LO estoy desarrollando en SQL SERVER 2012

Un saludo y gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Me gustaria usar WITH antes de la consulta pero me salta error

Publicado por Isaias (1921 intervenciones) el 30/10/2018 17:04:44
¿Y cual es la duda?, claramente dice que al final de todo el codigo deberia terminarlo con punto y coma (;)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
WITH TH_Hospitalizacion AS
(
select @cod_centro, @fec_annomes, 225,count(* ),getdate()
from TH_Hospitalizacion t
where t.cod_centro = @cod_centro and year(t.fec_alta)*100+month(t.fec_alta) = @fec_annomes
and xti_excluido ='n' and xti_tipoProceso='H'
AND EXISTS (SELECT COD_EPISODIO FROM TH_TomaFormulario A WITH (NOLOCK)
INNER JOIN TH_ValorIndicadorTomaFormulario_2 B WITH (NOLOCK) ON A.cod_TomaFormulario = B.cod_TomaFormulario
AND B.COD_INDICADOR IN ('5913',
'10965',
'48128')
and des_ValorIndicador IN ('0','1','2','3','4','5','6','7','8','9', '10')
AND t.cod_Episodio=A.cod_Episodio
AND A.cod_centro=@cod_centro)
);   ------ Aqui

Pregunta: Hace una CTE con el WITH, ¿para que?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 13
Ha aumentado su posición en 3 puestos en SQL (en relación al último mes)
Gráfica de SQL

Me gustaria usar WITH antes de la consulta pero me salta error

Publicado por borja (8 intervenciones) el 30/10/2018 17:10:44
Aunque ponga el punto sigue dando error.

Me lo ha pedido un compañero porque esta empeñado que así el rendimiento de la consulta va a ser mas rápido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Me gustaria usar WITH antes de la consulta pero me salta error

Publicado por Isaias (1921 intervenciones) el 30/10/2018 23:27:09
Amigo, es PUNTO Y COMA, no solo punto

El CTE, por si solo, no hará que su consulta sea mas rápida, hay una combinación de factores como los INDICES, ademas, el CTE no le regresa nada, solo construye su expresión de tabla común, debería haber un SELECT después de construir el CTE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Me gustaria usar WITH antes de la consulta pero me salta error

Publicado por Claudia (1 intervención) el 30/10/2018 23:41:01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Go
WITH TH_Hospitalizacion AS
(
select @cod_centro, @fec_annomes, 225,count(* ),getdate()
from TH_Hospitalizacion t
where t.cod_centro = @cod_centro and year(t.fec_alta)*100+month(t.fec_alta) = @fec_annomes
and xti_excluido ='n' and xti_tipoProceso='H'
AND EXISTS (SELECT COD_EPISODIO FROM TH_TomaFormulario A WITH (NOLOCK)
INNER JOIN TH_ValorIndicadorTomaFormulario_2 B WITH (NOLOCK) ON A.cod_TomaFormulario = B.cod_TomaFormulario
AND B.COD_INDICADOR IN ('5913',
'10965',
'48128')
and des_ValorIndicador IN ('0','1','2','3','4','5','6','7','8','9', '10')
AND t.cod_Episodio=A.cod_Episodio
AND A.cod_centro=@cod_centro)
)
Select * from TH_Hospitalizacion ;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Me gustaria usar WITH antes de la consulta pero me salta error

Publicado por claudia (1 intervención) el 12/03/2020 15:27:44
Hola yo tenia el mismo error, la base de datos debe tener nivel de compatibilidad SQL Server 2016 o posterior , sino no funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Me gustaria usar WITH antes de la consulta pero me salta error

Publicado por Isaias (1921 intervenciones) el 12/03/2020 16:50:20
Una CTE (expresión de tabla común) es un conjunto de resultados temporal al que puede hacer referencia en otra instrucción SELECT, INSERT, UPDATE o DELETE. Se introdujeron en SQL Server versión 2005. Cumplen con SQL y son parte de la especificación ANSI SQL 99.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar