Resolver nulos

20/10/2004 - 18:34 por Jondalar | Informe spam
Tengo una consulta sobre un servidor vinculado( access) que me devuelve

nulos y por sql lo tengo que cambiar ceros

no consigo establecer una sintaxis correcta podeis echarme una mano, gracias

el area de la chapuza esta delimitada

Perdon pero en mi mensaje anterior no estaba todo el procedimento



****************

if exists (select * from dbo.sysobjects where id
object_id(N'[dbo].[MovimientoStock]') and OBJECTPROPERTY(id, N'IsUserTable')

= 1)

drop table [dbo].[MovimientoStock]

GO

CREATE TABLE [dbo].[MovimientoStock] (

[Almacen] [smallint] NOT NULL ,

[Articulo] [varchar] (18) COLLATE Latin1_General_CI_AI NOT NULL ,

[Fecha] [smalldatetime] NOT NULL ,

[Documento] [varchar] (9) COLLATE Latin1_General_CI_AI NOT NULL ,

[Comentario] [varchar] (40) COLLATE Latin1_General_CI_AI NULL ,

[Cliente] [varchar] (15) COLLATE Latin1_General_CI_AI NULL ,

[Proveedor] [varchar] (15) COLLATE Latin1_General_CI_AI NULL ,

[Unidades] [float] NULL ,

[Precio] [float] NULL ,

[Importe] [float] NULL ,

[TipoMovimiento] [smallint] NULL ,

[Proyecto] [int] NOT NULL ,

[Departamento] [smallint] NULL ,

[Seccion] [smallint] NULL ,

[Pedido] [char] (10) COLLATE Latin1_General_CI_AI NULL

) ON [PRIMARY]

GO

CREATE CLUSTERED INDEX [Almacen] ON [dbo].[MovimientoStock]([Almacen],

[Articulo], [Fecha], [Documento], [TipoMovimiento]) WITH FILLFACTOR = 90 ON

[PRIMARY]

GO

ALTER TABLE [dbo].[MovimientoStock] ADD

CONSTRAINT [MovimientoStock_Departamento] DEFAULT (0) FOR [Departamento],

CONSTRAINT [MovimientoStock_Seccion] DEFAULT (0) FOR [Seccion],

CONSTRAINT [MovimientoStock_Proyecto] DEFAULT (0) FOR [Proyecto]

GO

CREATE INDEX [Proyecto] ON [dbo].[MovimientoStock]([Proyecto]) WITH

FILLFACTOR = 90 ON [PRIMARY]

GO

CREATE INDEX [Articulo] ON [dbo].[MovimientoStock]([Articulo]) WITH

FILLFACTOR = 90 ON [PRIMARY]

GO

CREATE INDEX [ArticuloFecha] ON [dbo].[MovimientoStock]([Articulo], [Fecha])

WITH FILLFACTOR = 90 ON [PRIMARY]

GO

CREATE INDEX [Cliente] ON [dbo].[MovimientoStock]([Cliente]) WITH FILLFACTOR

= 90 ON [PRIMARY]

GO

CREATE INDEX [Proveedor] ON [dbo].[MovimientoStock]([Proveedor]) WITH

FILLFACTOR = 90 ON [PRIMARY]

GO

ALTER TABLE [dbo].[MovimientoStock] ADD

CONSTRAINT [MovimientoStock_ClavesDeMovimiento] FOREIGN KEY

(

[TipoMovimiento]

) REFERENCES [dbo].[ClavesDeMovimiento] (

[TipoMovimiento]

)

GO

INSERT INTO [dbo].[MovimientoStock]

SELECT CAST(CodigoAlmacen AS integer) AS Almacen,

CAST(RTRIM(LTRIM(CodigoArticulo)) AS Varchar) AS Articulo,

CAST(Fecha AS datetime) AS Fecha,

CAST(RTRIM(LTRIM(Documento)) AS varchar) AS Documento,

CAST(Comentario AS Varchar) As Comentario,

CAST(RTRIM(LTRIM(CodigoCliente)) AS Varchar) AS Cliente,

CAST(RTRIM(LTRIM(CodigoProveedor)) AS Varchar) AS Proveedor,

CAST(Unidades AS Float),

CAST(Precio AS Float),

CAST(Importe AS Float),

CAST(TipoMovimiento AS Smallint),

***************Inicio de la chapuza

IF CodigoProyecto IS NULL THEN

BEGUIN

CAST('0' AS Integer) AS Proyecto

END

ELSE

CAST(CodigoProyecto AS Integer) AS Proyecto,

**************Fin de la chapuza

CAST('0' AS Smallint) AS Departamento,

CAST('0' AS Smallint) AS Seccion,

CAST('0' AS Char) AS Pedido

FROM CEPRENOR32...MovimientoStock MovimientoStockSA

WHERE (RTRIM(LTRIM(Documento)) <> 0) AND (Ejercicio > 2003) AND
(LTRIM(CodigoAlmacen) = '0001') AND (TipoMovimiento = 2)

GO

****************


Saludos Jondalar

NOTA 1. No me reces si me quieres escribir

NOTA 2. Por favor, las preguntas y comentarios en los grupos, así nos
beneficiamos todos.
 

Leer las respuestas

#1 Maxi
20/10/2004 - 19:40 | Informe spam
hola, deberias usar algo asi como:

ISNULL(VALOR,0)

ej

isnull(cast(..),0) as campo


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Jondalar" escribió en el mensaje
news:
Tengo una consulta sobre un servidor vinculado( access) que me devuelve

nulos y por sql lo tengo que cambiar ceros

no consigo establecer una sintaxis correcta podeis echarme una mano,


gracias

el area de la chapuza esta delimitada

Perdon pero en mi mensaje anterior no estaba todo el procedimento



****************

if exists (select * from dbo.sysobjects where id >
object_id(N'[dbo].[MovimientoStock]') and OBJECTPROPERTY(id,


N'IsUserTable')

= 1)

drop table [dbo].[MovimientoStock]

GO

CREATE TABLE [dbo].[MovimientoStock] (

[Almacen] [smallint] NOT NULL ,

[Articulo] [varchar] (18) COLLATE Latin1_General_CI_AI NOT NULL ,

[Fecha] [smalldatetime] NOT NULL ,

[Documento] [varchar] (9) COLLATE Latin1_General_CI_AI NOT NULL ,

[Comentario] [varchar] (40) COLLATE Latin1_General_CI_AI NULL ,

[Cliente] [varchar] (15) COLLATE Latin1_General_CI_AI NULL ,

[Proveedor] [varchar] (15) COLLATE Latin1_General_CI_AI NULL ,

[Unidades] [float] NULL ,

[Precio] [float] NULL ,

[Importe] [float] NULL ,

[TipoMovimiento] [smallint] NULL ,

[Proyecto] [int] NOT NULL ,

[Departamento] [smallint] NULL ,

[Seccion] [smallint] NULL ,

[Pedido] [char] (10) COLLATE Latin1_General_CI_AI NULL

) ON [PRIMARY]

GO

CREATE CLUSTERED INDEX [Almacen] ON [dbo].[MovimientoStock]([Almacen],

[Articulo], [Fecha], [Documento], [TipoMovimiento]) WITH FILLFACTOR = 90


ON

[PRIMARY]

GO

ALTER TABLE [dbo].[MovimientoStock] ADD

CONSTRAINT [MovimientoStock_Departamento] DEFAULT (0) FOR [Departamento],

CONSTRAINT [MovimientoStock_Seccion] DEFAULT (0) FOR [Seccion],

CONSTRAINT [MovimientoStock_Proyecto] DEFAULT (0) FOR [Proyecto]

GO

CREATE INDEX [Proyecto] ON [dbo].[MovimientoStock]([Proyecto]) WITH

FILLFACTOR = 90 ON [PRIMARY]

GO

CREATE INDEX [Articulo] ON [dbo].[MovimientoStock]([Articulo]) WITH

FILLFACTOR = 90 ON [PRIMARY]

GO

CREATE INDEX [ArticuloFecha] ON [dbo].[MovimientoStock]([Articulo],


[Fecha])

WITH FILLFACTOR = 90 ON [PRIMARY]

GO

CREATE INDEX [Cliente] ON [dbo].[MovimientoStock]([Cliente]) WITH


FILLFACTOR

= 90 ON [PRIMARY]

GO

CREATE INDEX [Proveedor] ON [dbo].[MovimientoStock]([Proveedor]) WITH

FILLFACTOR = 90 ON [PRIMARY]

GO

ALTER TABLE [dbo].[MovimientoStock] ADD

CONSTRAINT [MovimientoStock_ClavesDeMovimiento] FOREIGN KEY

(

[TipoMovimiento]

) REFERENCES [dbo].[ClavesDeMovimiento] (

[TipoMovimiento]

)

GO

INSERT INTO [dbo].[MovimientoStock]

SELECT CAST(CodigoAlmacen AS integer) AS Almacen,

CAST(RTRIM(LTRIM(CodigoArticulo)) AS Varchar) AS Articulo,

CAST(Fecha AS datetime) AS Fecha,

CAST(RTRIM(LTRIM(Documento)) AS varchar) AS Documento,

CAST(Comentario AS Varchar) As Comentario,

CAST(RTRIM(LTRIM(CodigoCliente)) AS Varchar) AS Cliente,

CAST(RTRIM(LTRIM(CodigoProveedor)) AS Varchar) AS Proveedor,

CAST(Unidades AS Float),

CAST(Precio AS Float),

CAST(Importe AS Float),

CAST(TipoMovimiento AS Smallint),

***************Inicio de la chapuza

IF CodigoProyecto IS NULL THEN

BEGUIN

CAST('0' AS Integer) AS Proyecto

END

ELSE

CAST(CodigoProyecto AS Integer) AS Proyecto,

**************Fin de la chapuza

CAST('0' AS Smallint) AS Departamento,

CAST('0' AS Smallint) AS Seccion,

CAST('0' AS Char) AS Pedido

FROM CEPRENOR32...MovimientoStock MovimientoStockSA

WHERE (RTRIM(LTRIM(Documento)) <> 0) AND (Ejercicio > 2003) AND
(LTRIM(CodigoAlmacen) = '0001') AND (TipoMovimiento = 2)

GO

****************


Saludos Jondalar

NOTA 1. No me reces si me quieres escribir

NOTA 2. Por favor, las preguntas y comentarios en los grupos, así nos
beneficiamos todos.







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.778 / Virus Database: 525 - Release Date: 15/10/2004

Preguntas similares