SQL Server - Null value Stored Procedure

 
Vista:

Null value Stored Procedure

Publicado por bingsiu (23 intervenciones) el 20/02/2009 03:51:57
Estimados compañeros: Tengo este stored procedure en sql server 2005 que funciona perfectamente, lo que pasa es que selecciona los max(resv) del día en room, pero si no existe resv para ese día me lo deja en blanco ó sea no pone nada, quisiera si no hubiera resv ese día me colocara un cero. Gracias por cualquier sugerencia. bing siu, San JOse, C.r.

SELECT room[12], [3], [18], [11], [16], [15]
FROM (SELECT datein, resv, room FROM Table1) AS T1
PIVOT ( max(resv) FOR room IN ([12], [3], [18], [11], [16], [15])) as test END
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

RE:Null value Stored Procedure

Publicado por Mau (67 intervenciones) el 20/02/2009 17:14:58
Que tal, puedes utilizar la función ISNULL para que te evalúe si el valor es nulo y lo sustituyas por otro.

En tu caso podrías utilizar lo siguiente:

SELECT room[12], [3], [18], [11], [16], [15]
FROM (SELECT datein, resv, room FROM Table1) AS T1
PIVOT ISNULL(( max(resv), 0) FOR room IN ([12], [3], [18], [11], [16], [15])) as test END

Saludos!
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

RE:Null value Stored Procedure

Publicado por bingsiu (23 intervenciones) el 20/02/2009 19:55:44
Gracias Mau, pero no funciona. Aqui te pongo todo el store procedure
ALTER PROCEDURE [dbo].[SelectCustomtr]

@StartDate Varchar(8),
@EndDate Varchar(8)

AS
BEGIN
SET NOCOUNT ON;

-- Insert statements for procedure here
SELECT
datein,[12], [3], [18], [11], [16], [15]

FROM(select datein,resv,room from Table1 where (datein >= @StartDate and datein<= @EndDate)) AS T1
PIVOT (max(resv) FOR room IN ([12], [3], [18], [11], [16], [15])) as test

END
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

RE:Null value Stored Procedure

Publicado por Mau (67 intervenciones) el 21/02/2009 19:49:34
Que tal, me podrías por favor enviar por email los scripts para crear las tablas, así como algunos registros para llenarlas?

También necesito que me digas cual es exactamente el resultado que requieres obtener. De esta forma te podría dar una solución.

Gracias.
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

RE:Null value Stored Procedure

Publicado por bingsiu (23 intervenciones) el 23/02/2009 02:37:48
Gracias Mauricio. La situacion es que tengo un programa de reservacion en vb.net 2005 con basedatos sql server 2005, necesito presentar en un gridview las columnas y filas con las reservas diarias entre dos fechas escogidas(en access uso consulta de referencias cruzadas) en sql server es pivot, ejemplo:


fecha 12 3 18 11 16 15 total

22/02/09 19-09 21-09 60-09 3

.....el siguiente día, etc.

El campo de las reservas es del tipo string(varchar). Loque necesito es que me de en la columna total la suma de las columnas ocupadas en este caso (3,18 y 16) que tienen las reservas (19-09, 21-09 y 60-09), las demas no tienen reservas . Con este stored procedure me brinda toda la informacion pero no me indica el total de room ocupadas.

ALTER PROCEDURE [dbo].[SelectCustomtr]

@StartDate Varchar(8),
@EndDate Varchar(8)
AS
BEGIN
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT
datein,[12], [3], [18], [11], [16], [15]

FROM(select datein,resv,room from Table1 where (datein >= @StartDate and datein<= @EndDate)) AS T1
PIVOT (max(resv) FOR room IN ([12], [3], [18], [11], [16], [15])) as test
END

Estaba pensando algo así.

ALTER PROCEDURE [dbo].[SelectCustomtr]

@StartDate Varchar(8),
@EndDate Varchar(8)
@total1 integer(4)

AS
BEGIN
SET NOCOUNT ON;

-- Insert statements for procedure here
SELECT
datein,[12], [3], [18], [11], [16], [15]

FROM(select datein,resv,room, count(resv) as total1 from Table1 where (datein >= @StartDate and datein<= @EndDate)) AS T1
PIVOT (max(resv) FOR room IN ([12], [3], [18], [11], [16], [15])) as test

END

Gracias por cualquier sugerencia.
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

RE:Null value Stored Procedure

Publicado por Mau (67 intervenciones) el 23/02/2009 18:14:15
Que tal, te he enviado un email.

Saludos!
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