SQL Server - consulta

 
Vista:

consulta

Publicado por carolina nadia palma (8 intervenciones) el 22/12/2008 20:06:40
No me resulta, necesito que tipodoc=1 que son las facturas, el total sea positivo y cuando sea 4 que son las notas de credito me coloque el total en negativo y tengo lo siguiente:

Select
docu_db.tipodoc as Codigo, numfact as Documento,Fecha,perso_db.nombre as vendedor,clien_db.razsoc as cliente,docde_db.descrip as producto,docde_db.cantidad,docde_db.precunit as precio,docde_db.descto as descto,Total=precunit*cantidad - precunit*cantidad*docde_db.descto/100,fechacre,fech1vta,feculvta,fechultcon,art_db.codigo
Where
(docu_db.tipodoc=1 or docu_db.tipodoc=4) and
fecha>=convert(datetime,'01/01/2008',103) and fecha<=convert(datetime,'31/12/2008',103) and
docu_db.numreg=docde_db.numrecor and docu_db.codvend=perso_db.numreg and docu_db.nrutfact=clien_db.nreguist and
docde_db.ncodart = art_db.nreguist
From
docu_db,docde_db,perso_db,clien_db, art_db
Order By
tipodoc
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:consulta

Publicado por Isaias (3308 intervenciones) el 22/12/2008 21:54:17
Ya te hice la observacion que estan mal colocados el WHERE y el FROM, ademas lo que tu necesitas hacer es un simple operacion matematica.

SELECT CASE WHEN tipodoc=1 THEN importe ELSE (importe*-1) END

Asi de sencillo.
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:consulta

Publicado por Carolina Palma R. (8 intervenciones) el 26/12/2008 12:46:40
Se que me hiciste la corrección, pero la formula matematica no la hace...
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:consulta

Publicado por Isaias (3308 intervenciones) el 26/12/2008 15:10:51
Prueba con esto:

DECLARE @Importe money
DECLARE @TipDoc bit
SET @Importe = 1200.00
SET @TipDoc = 1
SELECT CASE WHEN @TipDoc = 1 THEN (@Importe*-1) ELSE @Importe END

¿Lo hace?
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:consulta

Publicado por Carolina Palma R. (8 intervenciones) el 26/12/2008 20:25:00
Error en Definición de Consulta

Error Nro: 1526
Error Motor SQLSERVER: Connectivity error: [Microsoft][SQL Native Client][SQL Server]Incorrect syntax near the keyword 'DECLARE'.
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
Imágen de perfil de roger

RE:consulta

Publicado por roger (173 intervenciones) el 30/12/2008 00:38:57
Si entiendo lo que necesitas podrias utilizar un case when de la siguiente forma
(es tu misma consulta, solo agregué el CASE)

Select
docu_db.tipodoc as Codigo, numfact as Documento,Fecha,perso_db.nombre as vendedor,clien_db.razsoc as cliente,docde_db.descrip as producto,docde_db.cantidad,docde_db.precunit as precio,docde_db.descto as descto,CASE WHEN docu_db.tipodoc = 1 THEN ABS(precunit*cantidad - precunit*cantidad*docde_db.descto/100) WHEN docu_db.tipodoc = 4 THEN
ABS(precunit*cantidad - precunit*cantidad*docde_db.descto/100) * -1 END as total,fechacre,fech1vta,feculvta,fechultcon,art_db.codigo
Where
(docu_db.tipodoc=1 or docu_db.tipodoc=4) and
fecha>=convert(datetime,'01/01/2008',103) and fecha<=convert(datetime,'31/12/2008',103) and
docu_db.numreg=docde_db.numrecor and docu_db.codvend=perso_db.numreg and docu_db.nrutfact=clien_db.nreguist and
docde_db.ncodart = art_db.nreguist
From
docu_db,docde_db,perso_db,clien_db, art_db
Order By
tipodoc
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