SQL Server - Cual de estos scrips es mas efectivo ,

 
Vista:

Cual de estos scrips es mas efectivo ,

Publicado por alonso (21 intervenciones) el 14/08/2007 17:08:12
En una sentencia update con case

Update TABLA1
set Campo1 = (Select (Case
when (Moneda = 'S' ) then Costo * 5
when (Mneda = 'D' ) then Costo * 1.4
else Campo1
))
where TABLA1.Codarticulo in (select Articulos.Codarticulo from Articulos where Campo_Verificar = 0 )

primero se seleccionan los registros validos con where
y luego se hacen los updates

Es asi verdad?
espero q me contesten esta pequña duda
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:Cual de estos scrips es mas efectivo ,

Publicado por Isaias (3308 intervenciones) el 14/08/2007 18:19:57
Prueba asi:

UPDATE TABLA1
SET Campo1 = CASE WHEN Moneda = 'S' THEN Costo * 5
WHEN Moneda = 'D' THEN Costo * 1.4
ELSE Campo1
FROM TABLA1.Codarticulo JOIN (SELECT Codarticulo FROM Articulos WHERE Campo_Verificar = 0) AS X
ON TABLA1.Codarticulo = X.Codarticulo
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:Cual de estos scrips es mas efectivo ,

Publicado por alonso (21 intervenciones) el 14/08/2007 20:27:54
Gracias Isaias
por lo q veo el join esta dentro del la sentecia select case para actualizar el campo
y tengo q actualizar 24 campos con un formato parecido
veras

Update TABLA1
set Campo1 = (Select (Case
when (Moneda = 'S' ) then Costo * 5
when (Mneda = 'D' ) then Costo * 1.4
else Campo1
))
Campo2 = (Select (Case
when (Moneda = 'S' ) then Costo * @porcentaje 2
when (Mneda = 'D' ) then Costo * @porcentaje 2 * @tcambio
else Campo1
))
Campo3 = (Select (Case
when (Moneda = 'S' ) then Costo * @porcentaje 3
when (Mneda = 'D' ) then Costo * @porcentaje 3 * @tcambio
else Campo1
))
.....
---sucesivamente
where TABLA1.Codarticulo in (select Articulos.Codarticulo from Articulos where Campo_Verificar = 0 )

/***
esa es la structura del scrip
entonces tendria q poner JOIN (SELECT Codarticulo FROM Articulos WHERE Campo_Verificar = 0) AS X
ON TABLA1.Codarticulo = X.Codarticulo
..

para cada case .......

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:Cual de estos scrips es mas efectivo ,

Publicado por Isaias (3308 intervenciones) el 14/08/2007 20:32:33
Alonso

Deberias incluir tus observaciones (la mayor parte) en tu primera posta, de lo contrario, podemos llenar la pagina de "aclaraciones" y no es el objetivo.

No necesitas poner un JOIN por cada CASE, te mando la estructuara con varios campos:

UPDATE TABLA1
SET Campo1 = CASE WHEN Moneda = 'S' THEN Costo * 5
WHEN Moneda = 'D' THEN Costo * 1.4
ELSE Campo1 END,
Campo2 = CASE WHEN Moneda = 'S' THEN Costo * 5
WHEN Moneda = 'D' THEN Costo * 1.4
ELSE Campo1 END,
Campo3 = CASE WHEN Moneda = 'S' THEN Costo * 5
WHEN Moneda = 'D' THEN Costo * 1.4
ELSE Campo1 END,
CampoN = CASE WHEN Moneda = 'S' THEN Costo * 5
WHEN Moneda = 'D' THEN Costo * 1.4
ELSE Campo1 END,
FROM TABLA1.Codarticulo JOIN (select Codarticulo from Articulos where Campo_Verificar = 0) AS X
ON TABLA1.Codarticulo = X.Codarticulo
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:Cual de estos scrips es mas efectivo ,

Publicado por alonso (21 intervenciones) el 14/08/2007 21:08:09
Gracias por el concejo y por el scrip
veo q no era necesario un join para cada case

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:Cual de estos scrips es mas efectivo ,

Publicado por Isaias (3308 intervenciones) el 14/08/2007 22:55:00
De nada, 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