Modificar campos en una Vista

20/02/2006 - 20:47 por Omar | Informe spam
Que tal, nuevamente molestándolos.

Resulta que necesito hacer una consulta de facturación la cual la guardo
en una vista, pero necesito cambiar unos datos, es decir:

Tengo la siguiente consulta (vista)

Factura Status Monto Impuesto Total
1234 a $1000 $10 $1010
5678 a $500 $5 $505
9876 c $1000 $1 $1010

Y deseo que cuando se encuentre un Status = c, en los campos de Monto,
Impuesto y Total se les ponga un $0, algo como esto.

Factura Status Monto Impuesto Total
1234 a $1000 $10 $1010
5678 a $500 $5 $505
9876 c $0 $0 $0

Muchas gracias por su valiosa ayuda.

Preguntas similare

Leer las respuestas

#1 Noldis Chumacero
20/02/2006 - 21:25 | Informe spam
Omar,

Para ayudarte mejor deberías enviar tu vista.

Pero, suponiendo que tienes una vista como "me imagino" entonces te ayudo
con mi vista imaginaria...


SELECT Factura, Status, Monto, Impuesto, Total
FROM AlgunaTabla
WHERE Status<>'c'

UNION

SELECT Factura, Status, 0,0,0
FROM AlgunaTabla
WHERE Status='c'

Ing. Noldis Chumacero Chávez
Departamento de Sistemas
AeroSur S.A.
Santa Cruz de la Sierra, Bolivia
Telf. 3364446(236) 77074919
"Omar" escribió en el mensaje
news:O0ao$
Que tal, nuevamente molestándolos.

Resulta que necesito hacer una consulta de facturación la cual la guardo
en una vista, pero necesito cambiar unos datos, es decir:

Tengo la siguiente consulta (vista)

Factura Status Monto Impuesto Total
1234 a $1000 $10 $1010
5678 a $500 $5 $505
9876 c $1000 $1 $1010

Y deseo que cuando se encuentre un Status = c, en los campos de Monto,
Impuesto y Total se les ponga un $0, algo como esto.

Factura Status Monto Impuesto Total
1234 a $1000 $10 $1010
5678 a $500 $5 $505
9876 c $0 $0 $0

Muchas gracias por su valiosa ayuda.

Respuesta Responder a este mensaje
#2 Alejandro Mesa
20/02/2006 - 23:26 | Informe spam
Noldis,

Muy buena solucion, solo que usaria "union all" en vez de "union" porque
este ultimo consume mas recursos y la logica indica que una factura no puede
tener mas de status a la vez. Otra forma de solucionar el problema seria
usando la expresion "case".

select
Factura,
Status,
case when status = 'c' then 0 else Monto end as Monto,
case when status = 'c' then 0 else Impuesto end as Impuesto,
case when status = 'c' then 0 else Total end as Total
from tu_tabla
go


AMB

"Noldis Chumacero" wrote:


Omar,

Para ayudarte mejor deberías enviar tu vista.

Pero, suponiendo que tienes una vista como "me imagino" entonces te ayudo
con mi vista imaginaria...


SELECT Factura, Status, Monto, Impuesto, Total
FROM AlgunaTabla
WHERE Status<>'c'

UNION

SELECT Factura, Status, 0,0,0
FROM AlgunaTabla
WHERE Status='c'

Ing. Noldis Chumacero Chávez
Departamento de Sistemas
AeroSur S.A.
Santa Cruz de la Sierra, Bolivia
Telf. 3364446(236) 77074919
"Omar" escribió en el mensaje
news:O0ao$
> Que tal, nuevamente molestándolos.
>
> Resulta que necesito hacer una consulta de facturación la cual la guardo
> en una vista, pero necesito cambiar unos datos, es decir:
>
> Tengo la siguiente consulta (vista)
>
> Factura Status Monto Impuesto Total
> 1234 a $1000 $10 $1010
> 5678 a $500 $5 $505
> 9876 c $1000 $1 $1010
>
> Y deseo que cuando se encuentre un Status = c, en los campos de Monto,
> Impuesto y Total se les ponga un $0, algo como esto.
>
> Factura Status Monto Impuesto Total
> 1234 a $1000 $10 $1010
> 5678 a $500 $5 $505
> 9876 c $0 $0 $0
>
> Muchas gracias por su valiosa ayuda.
>




Respuesta Responder a este mensaje
#3 Omar
21/02/2006 - 00:09 | Informe spam
Alejandro Mesa escribió:
Noldis,

Muy buena solucion, solo que usaria "union all" en vez de "union" porque
este ultimo consume mas recursos y la logica indica que una factura no puede
tener mas de status a la vez. Otra forma de solucionar el problema seria
usando la expresion "case".

select
Factura,
Status,
case when status = 'c' then 0 else Monto end as Monto,
case when status = 'c' then 0 else Impuesto end as Impuesto,
case when status = 'c' then 0 else Total end as Total
from tu_tabla
go


AMB

"Noldis Chumacero" wrote:


Omar,

Para ayudarte mejor deberías enviar tu vista.

Pero, suponiendo que tienes una vista como "me imagino" entonces te ayudo
con mi vista imaginaria...


SELECT Factura, Status, Monto, Impuesto, Total
FROM AlgunaTabla
WHERE Status<>'c'

UNION

SELECT Factura, Status, 0,0,0
FROM AlgunaTabla
WHERE Status='c'

Ing. Noldis Chumacero Chávez
Departamento de Sistemas
AeroSur S.A.
Santa Cruz de la Sierra, Bolivia
Telf. 3364446(236) 77074919
"Omar" escribió en el mensaje
news:O0ao$
Que tal, nuevamente molestándolos.

Resulta que necesito hacer una consulta de facturación la cual la guardo
en una vista, pero necesito cambiar unos datos, es decir:

Tengo la siguiente consulta (vista)

Factura Status Monto Impuesto Total
1234 a $1000 $10 $1010
5678 a $500 $5 $505
9876 c $1000 $1 $1010

Y deseo que cuando se encuentre un Status = c, en los campos de Monto,
Impuesto y Total se les ponga un $0, algo como esto.

Factura Status Monto Impuesto Total
1234 a $1000 $10 $1010
5678 a $500 $5 $505
9876 c $0 $0 $0

Muchas gracias por su valiosa ayuda.











Que tal muchas gracias por su ayuda, pero para el primer caso (de
Noldis) no me funcionó ya que no pone el 0 y para el otro caso casi,
solo que hay un detalle, utilizando el "case" me pone al final una
columna con un 0 y yo lo que quiero es que me ponga el cero en la
columna original, no que me agregue otra columna al final.

Esta es mi consulta:

SELECT g.status_guia, g.no_transferencia_cobranza, g.num_guia_asignado
as Factura, g.num_guia, g.fecha_guia, g.fecha_vencimiento, g.fecha_pago,
p1.desc_plaza AS origen, p2.desc_plaza AS destino,c.nombre as cliente,
g.personalnombre AS operador, rg.descripcion_producto As Producto,
g.id_unidad, g.id_remolque1 as Tanque1, g.id_remolque2 as Tanque2,
g.no_viaje, g.fecha_cancelacion, g.motivo_cancelacion, g.flete,
g.seguro, g.autopistas, g.maniobras, g.otros, g.subtotal, g.iva_guia,
(g.subtotal + g.iva_guia) as subtotal2, g.monto_retencion, ((g.subtotal
+ g.iva_guia) - g.monto_retencion) as total

FROM dbo.trafico_guia g INNER JOIN
dbo.trafico_plaza p1 ON g.id_origen = p1.id_plaza INNER JOIN
dbo.trafico_plaza p2 ON g.id_destino = p2.id_plaza INNER JOIN
dbo.trafico_cliente c ON g.id_cliente = c.id_cliente INNER JOIN
dbo.trafico_renglon_guia rg ON g.no_guia = rg.no_guia AND consecutivo=1

Muchas gracias.
Respuesta Responder a este mensaje
#4 Alejandro Mesa
21/02/2006 - 13:55 | Informe spam
Omar,

Lo importante es que ya tienes una idea de como hacerlo. ahora te toca a ti
adaptarla a tus necesidades.


AMB

"Omar" wrote:

Alejandro Mesa escribió:
> Noldis,
>
> Muy buena solucion, solo que usaria "union all" en vez de "union" porque
> este ultimo consume mas recursos y la logica indica que una factura no puede
> tener mas de status a la vez. Otra forma de solucionar el problema seria
> usando la expresion "case".
>
> select
> Factura,
> Status,
> case when status = 'c' then 0 else Monto end as Monto,
> case when status = 'c' then 0 else Impuesto end as Impuesto,
> case when status = 'c' then 0 else Total end as Total
> from tu_tabla
> go
>
>
> AMB
>
> "Noldis Chumacero" wrote:
>
>>
>> Omar,
>>
>> Para ayudarte mejor deberías enviar tu vista.
>>
>> Pero, suponiendo que tienes una vista como "me imagino" entonces te ayudo
>> con mi vista imaginaria...
>>
>>
>> SELECT Factura, Status, Monto, Impuesto, Total
>> FROM AlgunaTabla
>> WHERE Status<>'c'
>>
>> UNION
>>
>> SELECT Factura, Status, 0,0,0
>> FROM AlgunaTabla
>> WHERE Status='c'
>>
>> Ing. Noldis Chumacero Chávez
>> Departamento de Sistemas
>> AeroSur S.A.
>> Santa Cruz de la Sierra, Bolivia
>> Telf. 3364446(236) 77074919
>> "Omar" escribió en el mensaje
>> news:O0ao$
>>> Que tal, nuevamente molestándolos.
>>>
>>> Resulta que necesito hacer una consulta de facturación la cual la guardo
>>> en una vista, pero necesito cambiar unos datos, es decir:
>>>
>>> Tengo la siguiente consulta (vista)
>>>
>>> Factura Status Monto Impuesto Total
>>> 1234 a $1000 $10 $1010
>>> 5678 a $500 $5 $505
>>> 9876 c $1000 $1 $1010
>>>
>>> Y deseo que cuando se encuentre un Status = c, en los campos de Monto,
>>> Impuesto y Total se les ponga un $0, algo como esto.
>>>
>>> Factura Status Monto Impuesto Total
>>> 1234 a $1000 $10 $1010
>>> 5678 a $500 $5 $505
>>> 9876 c $0 $0 $0
>>>
>>> Muchas gracias por su valiosa ayuda.
>>>
>>
>>
>>

Que tal muchas gracias por su ayuda, pero para el primer caso (de
Noldis) no me funcionó ya que no pone el 0 y para el otro caso casi,
solo que hay un detalle, utilizando el "case" me pone al final una
columna con un 0 y yo lo que quiero es que me ponga el cero en la
columna original, no que me agregue otra columna al final.

Esta es mi consulta:

SELECT g.status_guia, g.no_transferencia_cobranza, g.num_guia_asignado
as Factura, g.num_guia, g.fecha_guia, g.fecha_vencimiento, g.fecha_pago,
p1.desc_plaza AS origen, p2.desc_plaza AS destino,c.nombre as cliente,
g.personalnombre AS operador, rg.descripcion_producto As Producto,
g.id_unidad, g.id_remolque1 as Tanque1, g.id_remolque2 as Tanque2,
g.no_viaje, g.fecha_cancelacion, g.motivo_cancelacion, g.flete,
g.seguro, g.autopistas, g.maniobras, g.otros, g.subtotal, g.iva_guia,
(g.subtotal + g.iva_guia) as subtotal2, g.monto_retencion, ((g.subtotal
+ g.iva_guia) - g.monto_retencion) as total

FROM dbo.trafico_guia g INNER JOIN
dbo.trafico_plaza p1 ON g.id_origen = p1.id_plaza INNER JOIN
dbo.trafico_plaza p2 ON g.id_destino = p2.id_plaza INNER JOIN
dbo.trafico_cliente c ON g.id_cliente = c.id_cliente INNER JOIN
dbo.trafico_renglon_guia rg ON g.no_guia = rg.no_guia AND consecutivo=1

Muchas gracias.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida