SQL Server - Hacer un calendario de citas disponibles, con dos tablas

   
Vista:

Hacer un calendario de citas disponibles, con dos tablas

Publicado por Marisela chely11@gmail.com (3 intervenciones) el 22/10/2013 03:41:23
Hola!!

Necesito un poquito de ayuda, para generar como un tipo tabla dinamica con una consulta de sql, tengo el sig procedimiento:

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
47
48
49
50
51
52
53
54
55
56
USE [Intranet]
GO
/****** Object:  StoredProcedure [dbo].[sp_Sucursales_Prueba]    Script Date: 10/21/2013 17:48:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[sp_Sucursales_Prueba]
 
	AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
 
    -- Insert statements for procedure here
 
DECLARE @fechaDesde AS DATETIME
DECLARE @fechaHasta AS DATETIME
DECLARE @sqlQuery AS VARCHAR(8000)
DECLARE @campos AS VARCHAR(1000)
 
SET @fechaDesde = dateadd(d,2,cast(left(getdate(),11) as smalldatetime));
SET @fechaHasta = dateadd(d,6,cast(left(getdate(),11) as smalldatetime));
SET @sqlQuery = '';
SET @campos = '';
 
--	OBTENIENDO LOS NOMBRES DE LAS COLUMNAS DEL PERIODO DADO
 
	WITH x AS
	(
		SELECT @fechaDesde fecha
		UNION ALL
		SELECT DATEADD( d , 1 ,fecha )
		FROM x WHERE fecha < @fechaHasta
	)
	select @campos = stuff( (
	SELECT '],[' + CONVERT(VARCHAR,fecha,6) FROM x
	for xml path('') ) ,1,2,'' ) + ']'
	OPTION(MAXRECURSION 0)
 
	PRINT( @campos )
 
	SET @sqlQuery = 'SELECT * FROM (
		SELECT  NoCita,FechaCita, NSucursal as Sucursal
		FROM dbo.atc_sucursales_CalendarioEntregaTablets
		
 )p PIVOT( MAX( NoCita ) for fechacita IN( ' + @campos + ' ) ) as pt
ORDER BY Sucursal ASC'
 
EXEC ( @sqlQuery )END


El cual me muestra algo asi:

1
2
3
4
Sucursal     23 oct 13      24 oct 13     25 oct 13  ....
a1                     5                        6                       9
a2                     8                        7                      10
a3                     2                       3                       4

pero es la tabla donde se registran sin modificarse despues las citas que hay para esas sucursales, pero necesito restale la informacion de otra tabla, la cual se hacen las citas reservadas algunas si quedan completas y otras se eliminan ya que no terminan el registro.

y restarle con algo asi (atc_sucursales_CalendarioEntregaTablets.NoCita - COUNT(atc_sucursales_ValidarCitaTablet.FechaRe) )


Pero como resultado solo me da las unicas que sufrieron resta, las que no tenian modificacion ya no aparecen, cuando deberian aparacer con el valor completo sin la resta.


algun tip, o ayuda?

la segunda tabla tiene los valores Sucursal, FechaRe, FechaCaptura, Status

pero solo interfiere el contador de cuando las citas sean = a la otra tabla y que sean de la misma sucursal
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 Isaia

Hacer un calendario de citas disponibles, con dos tablas

Publicado por Isaia (3186 intervenciones) el 22/10/2013 05:44:45
Lo lei 2 veces, no lo entiendo.

Citas completadas
Citas reservadas

¿Qué quieres obtener, los días libres?
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

Hacer un calendario de citas disponibles, con dos tablas

Publicado por Marisela (3 intervenciones) el 22/10/2013 07:17:57
quiero saber los dias que me quedan para dar citas, en ese solo muestro los dias que hay sin restar nada.

agrego otra instrucion

SELECT atc_sucursales_CalendarioEntregaTablets.NSucursal, atc_sucursales_CalendarioEntregaTablets.FechaCita,
(atc_sucursales_CalendarioEntregaTablets.NoCita - COUNT(atc_sucursales_ValidarCitaTablet.FechaRe)) AS Disponibles
FROM atc_sucursales_CalendarioEntregaTablets INNER JOIN
atc_sucursales_ValidarCitaTablet
on atc_sucursales_CalendarioEntregaTablets.NSucursal=atc_sucursales_ValidarCitaTablet.Sucursal
where atc_sucursales_ValidarCitaTablet.FechaRe = atc_sucursales_CalendarioEntregaTablets.FechaCita and atc_sucursales_ValidarCitaTablet.FechaRe > dateadd (Day, +1, getdate()) and atc_sucursales_CalendarioEntregaTablets.FechaCita > dateadd (Day, +1, getdate())
GROUP BY atc_sucursales_CalendarioEntregaTablets.NSucursal, atc_sucursales_CalendarioEntregaTablets.FechaCita, atc_sucursales_CalendarioEntregaTablets.NoCita
order by atc_sucursales_CalendarioEntregaTablets.FechaCita asc

me muestra los dias que me quedan para dar citas, pero a los que no le resta porque no arroja el resultado con el count, no me los muestra. Y no encuentro como hacer que me los ponga ya puse null , coalesce y me arroja el mismo resultado.

Por ejemplo para el dia 25 tengo todos los dias libres, pero no me muestra nada de ese dia.
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

Hacer un calendario de citas disponibles, con dos tablas

Publicado por Marisela (3 intervenciones) el 23/10/2013 17:07:55
tengo una nueva consulta, pero ahora me muestra duplicados cuando las fechas no se han llenado en el dia....

SELECT distinct b.NombreSucursal as Sucursal, a.FechaCita, a.NoCita-(count (c.FechaRe)) as Citas
FROM atc_sucursales_CalendarioEntregaTablets a
left join atc_sucursales_sucursales b on a.IdSucursal=b.IdSucursal
left join atc_sucursales_ValidarCitaTablet c
on a.IdSucursal=c.IdSucursal
where a.FechaCita=c.FechaRe and a.FechaCita > dateadd (Day, +1, getdate()) and a.IdSucursal= c.IdSucursal
group by a.NoCita, b.NombreSucursal, a.FechaCita, c.FechaRe

union

SELECT distinct b.NombreSucursal as Sucursal, a.FechaCita, a.NoCita as Citas
FROM atc_sucursales_CalendarioEntregaTablets a
left join atc_sucursales_sucursales b on a.IdSucursal=b.IdSucursal
left join atc_sucursales_ValidarCitaTablet c
on a.IdSucursal=c.IdSucursal
where a.FechaCita!=c.FechaRe and c.FechaRe < a.FechaCita or c.FechaRe is null and a.FechaCita > dateadd (Day, +1, getdate()) and a.IdSucursal != c.IdSucursal
group by a.NoCita, b.NombreSucursal, a.FechaCita, c.FechaRe
order by b.NombreSucursal asc
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