cancel
Showing results for 
Search instead for 
Did you mean: 

Query

Former Member
0 Kudos

Buen dia

En el momento he realizo varias consultas o Query's. Mi problema es el siguiente:

Por ejemplo, tengo una consulta que es la facturacion del mes

SELECT

T0.DocNum AS 'FACTURA',

T1.CardFName AS 'CLIENTE',

T0.DocDate as 'FECHA',

CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.DocTotal*0 ELSE (T0.DocTotal+T0.WTSum) END 'TOTAL FACT.',

CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.VatSum*0 ELSE T0.VatSum END 'IVA',

CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.VatSum*0 ELSE (T0.DocTotal+T0.WTSum-T0.VatSum) END 'VALOR MERC.'

FROM [dbo].[OINV] T0 INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode

WHERE T0.DocDate >=[%0] and T0.DocDate <=[%1]

ORDER BY T0.DocNum, T0.DocDate

al realizar esta consulta me arroja los datos que necesito, pero no he podido arrojar el total de la sumatoria de cada colmuna llamadas 'TOTAL FACT.', 'IVA' y 'VALOR MERC.'

Esta informacion es relevante ya que lo importante es saber el facturado hasta una fecha determinada. Lo que toca hacer en la actualidad es exportar a excel y asi hacer las sumas necesarias.

Si alguien me puede ayudar en esta consulta le gradeceria demasiado

Gracias

Accepted Solutions (0)

Answers (2)

Answers (2)

former_member210784
Active Contributor
0 Kudos

Hola.

Si necesita ver el detalle y la sumatoria al tiempo, puede agregar la consulta que le proporciona Andrés a la suya, usando UNION. O también creando el layout de impresión de la consulta original y colocando campos de fórmula para sumar las columnas deseadas.

Saludos.

Former Member
0 Kudos

Hola, si lo que quieres es solo los totales, podrías realizar la siguiente consulta:


SELECT SUM(TOTAL_FACT) 'TOTAL FACT.', SUM(IVA) 'IVA', SUM(VALOR_MERC) 'VALOR_MERC.'
FROM
(
	SELECT
	T0.DocNum AS 'FACTURA',
	T1.CardFName AS 'CLIENTE',
	T0.DocDate as 'FECHA',
	CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.DocTotal*0 ELSE (T0.DocTotal+T0.WTSum) END 'TOTAL_FACT',
	CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.VatSum*0 ELSE T0.VatSum END 'IVA',
	CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.VatSum*0 ELSE (T0.DocTotal+T0.WTSum-T0.VatSum) END 'VALOR_MERC'
	FROM dbo.OINV T0 INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode
	WHERE T0.DocDate >=%0 and T0.DocDate <=%1
)A0 

Espero te sirva, de lo contrario cuentame y con gusto te ayudo!!!

Former Member
0 Kudos

Andres, de ante mano te agradezco tu colaboracion

Lo que necesito es la consulta con sus respectivos totales, agregue esta busqueda que me facilito pero al final con la sentencia UNION pero no me sirvio me dice :

"10/07/2009 16:45:53: 1). [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'UNION'.2). [Microso"_

SELECT

T0.DocNum AS 'FACTURA',

T1.CardFName AS 'CLIENTE',

T0.DocDate as 'FECHA',

CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.DocTotal*0 ELSE (T0.DocTotal+T0.WTSum) END 'TOTAL FACT.',

CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.VatSum*0 ELSE T0.VatSum END 'IVA',

CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.VatSum*0 ELSE (T0.DocTotal+T0.WTSum-T0.VatSum) END 'VALOR MERC.'

FROM [dbo].[OINV] T0 INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode

WHERE T0.DocDate >=[%0] and T0.DocDate <=[%1]

ORDER BY T0.DocNum, T0.DocDate

UNION

SELECT

SUM(TOTAL_FACT) 'TOTAL FACT.',

SUM(IVA) 'IVA',

SUM(VALOR_MERC) 'VALOR_MERC.'

FROM [dbo].[OINV] T0 INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode

Tambien utilise la sentencia COMPUTE, pero no se como llamar la columna que deseo que me sume ya que estas columnas son formulaas

Gracias

former_member210784
Active Contributor
0 Kudos

Hola.

Para usar UNION, hay que homogenizar los campos de ambas partes así:


SELECT 
T0.DocNum AS 'FACTURA',
T1.CardFName AS 'CLIENTE',
T0.DocDate as 'FECHA', 
CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.DocTotal*0 ELSE (T0.DocTotal+T0.WTSum) END 'TOTAL FACT.', 
CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.VatSum*0 ELSE T0.VatSum END 'IVA', 
CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.VatSum*0 ELSE (T0.DocTotal+T0.WTSum-T0.VatSum) END 'VALOR MERC.' 
FROM dbo.OINV T0 INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode
WHERE T0.DocDate BETWEEN '[%0]' AND '[%1]'

UNION ALL

SELECT '0 ', 'N/A ', GETDATE(), SUM(T10.TOTAL_FACT), SUM(T10.IVA), SUM(T10.VALOR_MERC) 
FROM
(
	SELECT
	T0.DocNum AS 'FACTURA',
	T1.CardFName AS 'CLIENTE',
	T0.DocDate as 'FECHA',
	CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.DocTotal*0 ELSE (T0.DocTotal+T0.WTSum) END 'TOTAL_FACT',
	CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.VatSum*0 ELSE T0.VatSum END 'IVA',
	CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.VatSum*0 ELSE (T0.DocTotal+T0.WTSum-T0.VatSum) END 'VALOR_MERC'
	FROM dbo.OINV T0 INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode
	WHERE T0.DocDate BETWEEN '[%0]' AND '[%1]' 
)T10

El detalle es qué mostrar en la última fila que tiene los totales para las tres primeras columnas, por aquello del tipo de datos, que debe coincidir con las de la primera parte antes del UNION.

Espero sea de ayuda.

Former Member
0 Kudos

Hola Hector Daniel

use la consulta que me facilisaste

SELECT

T0.DocNum AS 'FACTURA',

T1.CardFName AS 'CLIENTE',

T0.DocDate as 'FECHA',

CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.DocTotal*0 ELSE (T0.DocTotal+T0.WTSum) END 'TOTAL FACT.',

CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.VatSum*0 ELSE T0.VatSum END 'IVA',

CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.VatSum*0 ELSE (T0.DocTotal+T0.WTSum-T0.VatSum) END 'VALOR MERC.'

FROM [dbo].[OINV] T0 INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode

WHERE T0.DocDate >=[%0] and T0.DocDate <=[%1]

ORDER BY T0.DocNum, T0.DocDate

UNION ALL

SELECT '0 ', 'N/A ', GETDATE(), SUM(T10.TOTAL_FACT), SUM(T10.IVA), SUM(T10.VALOR_MERC)

FROM

(SELECT T0.DocNum AS 'FACTURA',T1.CardFName AS 'CLIENTE',T0.DocDate as 'FECHA',CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.DocTotal0 ELSE (T0.DocTotal+T0.WTSum) END 'TOTAL_FACT',CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.VatSum0 ELSE T0.VatSum END 'IVA',CASE T0.NumAtCard WHEN 'ANULADA' THEN T0.VatSum*0 ELSE (T0.DocTotal+T0.WTSum-T0.VatSum) END 'VALOR_MERC'FROM [dbo].[OINV] T0 INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode

WHERE T0.DocDate >=[%0] and T0.DocDate <=[%1])T10

pero me sigue generando un error

13/07/2009 08:09:12: 1). [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'UNION'.

2). [Micrososoft Odbc SQL Server Drive

La verdad no se en que estoy fallando

agradezco tu ayuda

Gracias

former_member210784
Active Contributor
0 Kudos

Hola.

El problema está en la clausula ORDER By antes del UNION.

No se puede usar esa cláusula en subconsultas, funciones, vistas ni CTE´s.

Quedo en espera de sus comentarios.

Former Member
0 Kudos

Hector Daniel muchisisisiismas gracias la consulta me quedo perfecta. Le agradezco demasiado

former_member210784
Active Contributor
0 Kudos

Hola.

Me alegro haber podido ayudar.

Si ya se solucionó el problema, favor asignar puntaje a las respuestas y cerrar el caso.

Gracias y saludos.