Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Between en Case de una Consulta (https://www.clubdelphi.com/foros/showthread.php?t=73645)

DasGrun 06-05-2011 22:51:59

Between en Case de una Consulta
 
2 Archivos Adjunto(s)
Buenas tardes, una vez mas de su valiosa ayuda.
estoy usando Sql Server 2003.
explico.
tengo la siguiente tabla. a esta tabla necesito hacerle una consulta de tomar el valor Neto que es calculado de la suma total de credito menos la suma total del debito de un determinado Mes. y colocarlo en una columna.
tabla
Archivo Adjunto 1983

ID CUENTA CREDITO DEBITO FECHA NETO
1 L. 1,000.00 L. 0.00 01/01/2011 L. 25,000.00
2 L. 2,000.00 L. 0.00 08/01/2011
3 L. 0.00 L. 500.00 05/01/2011
4 L. 2,500.00 L. 0.00 05/02/2011 L. 3,500.00
5 L. 2,000.00 L. 0.00 08/02/2011
6 L. 0.00 L. 1,000.00 25/02/2011
7 L. 3,200.00 L. 0.00 06/03/2011 L. 3,000.00
8 L. 0.00 L. 200.00 08/03/2011


lo que se quiere hacer es que me presente este resultado:
Archivo Adjunto 1984
ENERO FEBRERO MARZO
L. 25,000.00 L. 3,500.00 L. 3,000.00


Lo He estado haciendo con Case y between en un select y no me presenta el resultado luego lo hice de esta forma y me aparece en forma vertical.
Código SQL [-]
SELECT 
SUM(GL20000.DEBITAMT) - SUM(GL20000.CRDTAMNT) AS ENERO
FROM
  GL20000
  INNER JOIN dbo.GL00100 ON (GL20000.ACTINDX = dbo.GL00100.ACTINDX)
  WHERE
  GL00100.MNACSGMT = '51504010' and
  GL20000.TRXDATE BETWEEN '20100101' and '20100131'
UNION ALL
SELECT 
SUM(GL20000.DEBITAMT) - SUM(GL20000.CRDTAMNT) AS ENERO
FROM
  GL20000
  INNER JOIN dbo.GL00100 ON (GL20000.ACTINDX = dbo.GL00100.ACTINDX)
  WHERE
  GL00100.MNACSGMT = '51504010' and
  GL20000.TRXDATE BETWEEN '20100201' and '20100228'
UNION ALL
SELECT 
SUM(GL20000.DEBITAMT) - SUM(GL20000.CRDTAMNT) AS ENERO
FROM
  GL20000
  INNER JOIN dbo.GL00100 ON (GL20000.ACTINDX = dbo.GL00100.ACTINDX)
  WHERE
  GL00100.MNACSGMT = '51504010' and
  GL20000.TRXDATE BETWEEN '20100301' and '20100331'

espero que comprendan y de ante mano muchas gracias.

oscarac 07-05-2011 00:18:28

investiga sobre pivot... se que en Sql Server 2003 no hay esa posibilidad pero con artificios se puede solucionar

overloaded 21-05-2011 11:27:05

podrias hacerlo así:

Código SQL [-]
SELECT 
(
SELECT 
SUM(GL20000.DEBITAMT) - SUM(GL20000.CRDTAMNT)
FROM
  GL20000
  INNER JOIN dbo.GL00100 ON (GL20000.ACTINDX = dbo.GL00100.ACTINDX)
  WHERE
  GL00100.MNACSGMT = '51504010' and
  GL20000.TRXDATE BETWEEN '20100101' and '20100131'
) AS ENERO,
(
SELECT 
SUM(GL20000.DEBITAMT) - SUM(GL20000.CRDTAMNT) 
FROM
  GL20000
  INNER JOIN dbo.GL00100 ON (GL20000.ACTINDX = dbo.GL00100.ACTINDX)
  WHERE
  GL00100.MNACSGMT = '51504010' and
  GL20000.TRXDATE BETWEEN '20100201' and '20100228'
) AS FEBRERO,
(
SELECT 
SUM(GL20000.DEBITAMT) - SUM(GL20000.CRDTAMNT)
FROM
  GL20000
  INNER JOIN dbo.GL00100 ON (GL20000.ACTINDX = dbo.GL00100.ACTINDX)
  WHERE
  GL00100.MNACSGMT = '51504010' and
  GL20000.TRXDATE BETWEEN '20100301' and '20100331'
) AS MARZO,
.....
FROM DUAL

DasGrun 21-05-2011 18:24:42

Gracias lo voy a probar, he estando probando de estos tipos de PIVOT pero no me da el resultado que necesito.

¿cual tabla se colocaria como Master?

saludos


La franja horaria es GMT +2. Ahora son las 04:49:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi