SQL Server - pregunta sobre WITH

 
Vista:

pregunta sobre WITH

Publicado por Ricardo (1 intervención) el 06/05/2010 17:21:00
Buenos dias, tengo una consulta sobre el uso de WITH en sql server 2005, actualmente me encuentro en un proyecto web, la cual otra persona dejo el proyecto en mis manos, el problema que la persona se fue pero hay cosas que nunca me dijo, por ejemplo:
el uso del WITH en SQL SERVER 2005, aca va mi sentencia.

WITH "CTE" ( CODI_RES, DESC_RES, NUME_ORDE_RES, CODI_PRO, DESC_PRO, SUPUESTOS_LIST, DES_SUP_RES, length )
AS (---- aca va una sentencia SQL)

la pregunta es: ¿Para que sirve la palabra reservada WITH en sql server 2005? por que para empezar "CTE" no es ningun objeto, ni variable tampoco, pero mas o menos creo que esta creando especie de una tabla temporal.

Ojala alguien me pueda sacar de esa duda, y deseable si tiene un ejemplo,.

Muchas gracias.
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: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:pregunta sobre WITH

Publicado por Isaias (4558 intervenciones) el 06/05/2010 18:29:19
Si leyeras un poquito en tu ayuda en linea, te darias cuenta que la sentencia WITH CTE, no es otra cosa que CON "C"ommon "T"able "E"xpression, esto es, que esta instruccion viene a substituir a las famosas tablas temporales #Table, ##Table.

Te aconsejo que leas tu ayuda en linea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de RENZO

RE:pregunta sobre WITH

Publicado por RENZO (1 intervención) el 18/03/2017 18:47:25
GRACIAS Issaias, lo resolvi el problema tenia una consulta bien grande y con el comentario de la clausula WITH que hiciste, entendi mi problema....

aqui esta mi consulta y funciona ...todavia lo tengo que revisar con los resultados manuales .... gracias....



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
with resultado as
(
select distinct
b.casoid,
a.numeropoliza,
a.fechaSiniestro,
b.nombreAccidentado,
b.reservadiscapacidad as [Reserva_Discapacidad_Real],
b.reservagastoMedico as [Reserva_Medico_Real] ,
e.neto as [Monto_Factura],
--b.casoId,
--e.numeroFactura,
--e.facturaid,
--f.Rembolsoid,
f.neto as [Rembolso],
c.monto as [CG_Aprobadas],
c.estado
from Siniestro a
inner join Caso b on a.siniestroid = b.siniestroId
full join CartaGarantia c on b.casoId = c.casoId
inner join FacturaCartaGarantia d on c.cartaGarantiaId = d.cartaGarantiaId
inner join Factura e on d.facturaId = e.facturaId
full join Rembolso f on b.casoId = f.casoId
group by b.casoid,a.numeropoliza,a.fechaSiniestro,b.nombreAccidentado,b.reservadiscapacidad,b.reservagastoMedico,e.neto,f.neto,c.monto,c.estado
--order by c.estado, a.fechaSiniestro
)
select
casoid,
numeropoliza,
fechasiniestro,
nombreAccidentado,
reserva_discapacidad_real as [Reserva discapacidad Real S/.],
reserva_medico_real as [Reserva Medico Real],
sum (monto_factura) as [Monto Factura S/.],
sum (Rembolso) as [Monto Rembolso S/.],
sum (cg_aprobadas) as [Monto CG_Aprobadas S/.]
from resultado
where fechaSiniestro between '01-01-2017' and '31-01-2017'
group by
casoid,
numeropoliza,
fechasiniestro,
nombreAccidentado,
reserva_discapacidad_real,
reserva_medico_real
order by numeroPoliza
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