SQL - Subtotal em determinada coluna

SQL

25/02/2020

Tenho seguinte Query abaixo,

SELECT 
T2.[Serial] AS ''NF'', 
T2.[CardCode] AS ''CÓDIGO'', 
T2.[CardName] AS ''CLIENTE'', 
T2.[TaxDate] AS ''DATA'', 
T0.[ItemCode] AS ''ITEM'', 
T0.[Dscription] AS ''DESCRIÇÃO'', 
T0.[Quantity] AS ''QUANTIDADE'', 
T0.[PriceBefDi] AS ''PREÇO'', 
T0.[Quantity] * T0.[PriceBefDi] AS ''VALOR TOTAL'', 
T0.[CFOPCode] AS ''CFOP'', 
T0.[VatSumSy] AS ''IPI + ICMS ST'', 
T0.[VatSumSy] + (T0.[Quantity] * T0.[PriceBefDi]) AS ''TOTAL COM IMPOSTO'' FROM INV1 T0  INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode] INNER JOIN OINV T2 ON T0.[DocEntry] = T2.[DocEntry] WHERE T2.[CANCELED] = ''N''
AND  T1.[QryGroup4] = ''Y''
AND  (T2.[TaxDate]  >= [%1] OR [%1] = '''')
AND (T2.[TaxDate]  <= [%2] OR [%2] = '''')
AND  T0.[CFOPCode] <> ''5949'' ORDER BY T2.[TaxDate]


Apresentando o seguinte resultado:

 NF	CÓDIGO	CLIENTE	DATA	ITEM	DESCRIÇÃO	QUANTIDADE	PREÇO	VALOR TOTAL	CFOP	IPI + ICMS ST	TOTAL COM IMPOSTO
3181	C00048	CLIENTE 1	03/01/2019	7874	ITEM A	22.050,00	1,33	29.326,50	5401	7.529,52	36.856,02
3184	C00010	CLIENTE 2	03/01/2019	14107	ITEM B	228	2,12	483,36	5401	184,88	668,24
3185	C00010	CLIENTE 3	04/01/2019	14117	ITEM C	72	3,88	279,36	5401	71,73	351,09
43512	C00003	CLIENTE 4	04/01/2019	17256	ITEM D	40.848,00	0,203	8.292,14	5124	0	8.292,14
43514	C00003	CLIENTE 4	04/01/2019	17255	ITEM E	12.912,00	0,3736	4.823,92	5124	0	4.823,92
43516	C00003	CLIENTE 4	04/01/2019	18453	ITEM F	15.192,00	0,2733	4.151,97	5124	0	4.151,97


Como posso criar outra coluna quantidade subtotal com o a soma do subtotal dos valores apresentando como abaixo:

 NF	     CÓDIGO	CLIENTE	DATA	ITEM	DESCRIÇÃO	QUANTIDADE	   QUANT SUBT     PREÇO	VALOR TOTAL	CFOP	IPI + ICMS ST	TOTAL COM IMPOSTO
3181	C00048	CLIENTE 1	03/01/2019	7874	ITEM A	22.050,00	22.050,00      1,33	29.326,50	5401	7.529,52	36.856,02
3184	C00010	CLIENTE 2	03/01/2019	14107	ITEM B	228,00		22.278,00     2,12  483,36	5401	184,88	668,24
3185	C00010	CLIENTE 3	04/01/2019	14117	ITEM C	72,00		22.350,00   3,88   279,36	5401	71,73	351,09
43512	C00003	CLIENTE 4	04/01/2019	17256	ITEM D	40.848,00	63.198,00       0,203	8.292,14	5124	0	8.292,14
43514	C00003	CLIENTE 4	04/01/2019	17255	ITEM E	12.912,00	76.110,00      0,3736	4.823,92	5124	0	4.823,92
43516	C00003	CLIENTE 4	04/01/2019	18453	ITEM F	15.192,00	 91,302,00    0,2733	4.151,97	5124	0	4.151,97



Obrigado a todos.
Rodolfo Sev

Rodolfo Sev

Curtidas 0

Melhor post

Anderson Gonçalves

Anderson Gonçalves

26/02/2020

Tenho seguinte Query abaixo,

SELECT 
T2.[Serial] AS ''NF'', 
T2.[CardCode] AS ''CÓDIGO'', 
T2.[CardName] AS ''CLIENTE'', 
T2.[TaxDate] AS ''DATA'', 
T0.[ItemCode] AS ''ITEM'', 
T0.[Dscription] AS ''DESCRIÇÃO'', 
T0.[Quantity] AS ''QUANTIDADE'', 
T0.[PriceBefDi] AS ''PREÇO'', 
T0.[Quantity] * T0.[PriceBefDi] AS ''VALOR TOTAL'', 
T0.[CFOPCode] AS ''CFOP'', 
T0.[VatSumSy] AS ''IPI + ICMS ST'', 
T0.[VatSumSy] + (T0.[Quantity] * T0.[PriceBefDi]) AS ''TOTAL COM IMPOSTO'' FROM INV1 T0  INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode] INNER JOIN OINV T2 ON T0.[DocEntry] = T2.[DocEntry] WHERE T2.[CANCELED] = ''N''
AND  T1.[QryGroup4] = ''Y''
AND  (T2.[TaxDate]  >= [%1] OR [%1] = '''')
AND (T2.[TaxDate]  <= [%2] OR [%2] = '''')
AND  T0.[CFOPCode] <> ''5949'' ORDER BY T2.[TaxDate]


Apresentando o seguinte resultado:

 NF	CÓDIGO	CLIENTE	DATA	ITEM	DESCRIÇÃO	QUANTIDADE	PREÇO	VALOR TOTAL	CFOP	IPI + ICMS ST	TOTAL COM IMPOSTO
3181	C00048	CLIENTE 1	03/01/2019	7874	ITEM A	22.050,00	1,33	29.326,50	5401	7.529,52	36.856,02
3184	C00010	CLIENTE 2	03/01/2019	14107	ITEM B	228	2,12	483,36	5401	184,88	668,24
3185	C00010	CLIENTE 3	04/01/2019	14117	ITEM C	72	3,88	279,36	5401	71,73	351,09
43512	C00003	CLIENTE 4	04/01/2019	17256	ITEM D	40.848,00	0,203	8.292,14	5124	0	8.292,14
43514	C00003	CLIENTE 4	04/01/2019	17255	ITEM E	12.912,00	0,3736	4.823,92	5124	0	4.823,92
43516	C00003	CLIENTE 4	04/01/2019	18453	ITEM F	15.192,00	0,2733	4.151,97	5124	0	4.151,97


Como posso criar outra coluna quantidade subtotal com o a soma do subtotal dos valores apresentando como abaixo:

 NF	     CÓDIGO	CLIENTE	DATA	ITEM	DESCRIÇÃO	QUANTIDADE	   QUANT SUBT     PREÇO	VALOR TOTAL	CFOP	IPI + ICMS ST	TOTAL COM IMPOSTO
3181	C00048	CLIENTE 1	03/01/2019	7874	ITEM A	22.050,00	22.050,00      1,33	29.326,50	5401	7.529,52	36.856,02
3184	C00010	CLIENTE 2	03/01/2019	14107	ITEM B	228,00		22.278,00     2,12  483,36	5401	184,88	668,24
3185	C00010	CLIENTE 3	04/01/2019	14117	ITEM C	72,00		22.350,00   3,88   279,36	5401	71,73	351,09
43512	C00003	CLIENTE 4	04/01/2019	17256	ITEM D	40.848,00	63.198,00       0,203	8.292,14	5124	0	8.292,14
43514	C00003	CLIENTE 4	04/01/2019	17255	ITEM E	12.912,00	76.110,00      0,3736	4.823,92	5124	0	4.823,92
43516	C00003	CLIENTE 4	04/01/2019	18453	ITEM F	15.192,00	 91,302,00    0,2733	4.151,97	5124	0	4.151,97



Obrigado a todos.




Para ajudar preciso saber qual o seu banco de dados, porque exitem comandos diferentes entre eles, porém é possível sim.

Entra em contato.
Skype: anderson@case13.com.br
GOSTEI 1

Mais Respostas

Emerson Nascimento

Emerson Nascimento

25/02/2020

tem certeza que precisa de algo assim? não conheço os produtos, mas imagine a seguinte situação:
NF      CÓDIGO  CLIENTE     DATA        ITEM    DESCRIÇÃO   QUANTIDADE   PREÇO   VALOR TOTAL  CFOP   IPI + ICMS ST   TOTAL COM IMPOSTO
3181    C00048  CLIENTE 1   03/01/2019  7874    LEITE        22.050,00   1,33      29.326,50  5401        7.529,52           36.856,02
3184    C00010  CLIENTE 2   03/01/2019  14107   PAO             228,00   2,12         483,36  5401          184,88              668,24
3185    C00010  CLIENTE 3   04/01/2019  14117   PRESUNTO         72,00   3,88         279,36  5401           71,73              351,09
43512   C00003  CLIENTE 4   04/01/2019  17256   IOGURTE      40.848,00   0,203      8.292,14  5124            0,00            8.292,14
43514   C00003  CLIENTE 4   04/01/2019  17255   CHOCOLATE    12.912,00   0,3736     4.823,92  5124            0,00            4.823,92
43516   C00003  CLIENTE 4   04/01/2019  18453   OVOS         15.192,00   0,2733     4.151,97  5124            0,00            4.151,97
onde:
LEITE     - LITRO
PAO       - PESO
MORTADELA - PESO
YOGURTE   - CARTELA
CHOCOLATE - UNIDADE
OVOS      - DUZIA
ao somar, seria obtido um total que não quer dizer nada, porque são várias unidades de medida...
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

25/02/2020

tem certeza que precisa de algo assim? não conheço os produtos, mas imagine a seguinte situação:
NF      CÓDIGO  CLIENTE     DATA        ITEM    DESCRIÇÃO   QUANTIDADE   PREÇO   VALOR TOTAL  CFOP   IPI + ICMS ST   TOTAL COM IMPOSTO
3181    C00048  CLIENTE 1   03/01/2019  7874    LEITE        22.050,00   1,33      29.326,50  5401        7.529,52           36.856,02
3184    C00010  CLIENTE 2   03/01/2019  14107   PAO             228,00   2,12         483,36  5401          184,88              668,24
3185    C00010  CLIENTE 3   04/01/2019  14117   PRESUNTO         72,00   3,88         279,36  5401           71,73              351,09
43512   C00003  CLIENTE 4   04/01/2019  17256   IOGURTE      40.848,00   0,203      8.292,14  5124            0,00            8.292,14
43514   C00003  CLIENTE 4   04/01/2019  17255   CHOCOLATE    12.912,00   0,3736     4.823,92  5124            0,00            4.823,92
43516   C00003  CLIENTE 4   04/01/2019  18453   OVOS         15.192,00   0,2733     4.151,97  5124            0,00            4.151,97
onde:
LEITE     - LITRO
PAO       - PESO
PRESUNTO  - PESO
YOGURTE   - CARTELA
CHOCOLATE - UNIDADE
OVOS      - DUZIA
ao somar, seria obtido um total que não quer dizer nada, porque são várias unidades de medida...
GOSTEI 0
Rodolfo Sev

Rodolfo Sev

25/02/2020

tem certeza que precisa de algo assim? não conheço os produtos, mas imagine a seguinte situação:
NF      CÓDIGO  CLIENTE     DATA        ITEM    DESCRIÇÃO   QUANTIDADE   PREÇO   VALOR TOTAL  CFOP   IPI + ICMS ST   TOTAL COM IMPOSTO
3181    C00048  CLIENTE 1   03/01/2019  7874    LEITE        22.050,00   1,33      29.326,50  5401        7.529,52           36.856,02
3184    C00010  CLIENTE 2   03/01/2019  14107   PAO             228,00   2,12         483,36  5401          184,88              668,24
3185    C00010  CLIENTE 3   04/01/2019  14117   PRESUNTO         72,00   3,88         279,36  5401           71,73              351,09
43512   C00003  CLIENTE 4   04/01/2019  17256   IOGURTE      40.848,00   0,203      8.292,14  5124            0,00            8.292,14
43514   C00003  CLIENTE 4   04/01/2019  17255   CHOCOLATE    12.912,00   0,3736     4.823,92  5124            0,00            4.823,92
43516   C00003  CLIENTE 4   04/01/2019  18453   OVOS         15.192,00   0,2733     4.151,97  5124            0,00            4.151,97
onde:
LEITE     - LITRO
PAO       - PESO
PRESUNTO  - PESO
YOGURTE   - CARTELA
CHOCOLATE - UNIDADE
OVOS      - DUZIA
ao somar, seria obtido um total que não quer dizer nada, porque são várias unidades de medida...


Trabalhamos com produção de itens, e todos são contados em unidades mesmo. Portanto a somatória se daria para saber se em determinado até determinado dia do mês quantos itens no total ja foram produzidos. Sabendo como se faz posso aplicar o mesmo também a qualquer outro campo da tabela.

Obrigado
GOSTEI 0
Rodolfo Sev

Rodolfo Sev

25/02/2020

Tenho seguinte Query abaixo,

SELECT 
T2.[Serial] AS ''NF'', 
T2.[CardCode] AS ''CÓDIGO'', 
T2.[CardName] AS ''CLIENTE'', 
T2.[TaxDate] AS ''DATA'', 
T0.[ItemCode] AS ''ITEM'', 
T0.[Dscription] AS ''DESCRIÇÃO'', 
T0.[Quantity] AS ''QUANTIDADE'', 
T0.[PriceBefDi] AS ''PREÇO'', 
T0.[Quantity] * T0.[PriceBefDi] AS ''VALOR TOTAL'', 
T0.[CFOPCode] AS ''CFOP'', 
T0.[VatSumSy] AS ''IPI + ICMS ST'', 
T0.[VatSumSy] + (T0.[Quantity] * T0.[PriceBefDi]) AS ''TOTAL COM IMPOSTO'' FROM INV1 T0  INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode] INNER JOIN OINV T2 ON T0.[DocEntry] = T2.[DocEntry] WHERE T2.[CANCELED] = ''N''
AND  T1.[QryGroup4] = ''Y''
AND  (T2.[TaxDate]  >= [%1] OR [%1] = '''')
AND (T2.[TaxDate]  <= [%2] OR [%2] = '''')
AND  T0.[CFOPCode] <> ''5949'' ORDER BY T2.[TaxDate]


Apresentando o seguinte resultado:

 NF	CÓDIGO	CLIENTE	DATA	ITEM	DESCRIÇÃO	QUANTIDADE	PREÇO	VALOR TOTAL	CFOP	IPI + ICMS ST	TOTAL COM IMPOSTO
3181	C00048	CLIENTE 1	03/01/2019	7874	ITEM A	22.050,00	1,33	29.326,50	5401	7.529,52	36.856,02
3184	C00010	CLIENTE 2	03/01/2019	14107	ITEM B	228	2,12	483,36	5401	184,88	668,24
3185	C00010	CLIENTE 3	04/01/2019	14117	ITEM C	72	3,88	279,36	5401	71,73	351,09
43512	C00003	CLIENTE 4	04/01/2019	17256	ITEM D	40.848,00	0,203	8.292,14	5124	0	8.292,14
43514	C00003	CLIENTE 4	04/01/2019	17255	ITEM E	12.912,00	0,3736	4.823,92	5124	0	4.823,92
43516	C00003	CLIENTE 4	04/01/2019	18453	ITEM F	15.192,00	0,2733	4.151,97	5124	0	4.151,97


Como posso criar outra coluna quantidade subtotal com o a soma do subtotal dos valores apresentando como abaixo:

 NF	     CÓDIGO	CLIENTE	DATA	ITEM	DESCRIÇÃO	QUANTIDADE	   QUANT SUBT     PREÇO	VALOR TOTAL	CFOP	IPI + ICMS ST	TOTAL COM IMPOSTO
3181	C00048	CLIENTE 1	03/01/2019	7874	ITEM A	22.050,00	22.050,00      1,33	29.326,50	5401	7.529,52	36.856,02
3184	C00010	CLIENTE 2	03/01/2019	14107	ITEM B	228,00		22.278,00     2,12  483,36	5401	184,88	668,24
3185	C00010	CLIENTE 3	04/01/2019	14117	ITEM C	72,00		22.350,00   3,88   279,36	5401	71,73	351,09
43512	C00003	CLIENTE 4	04/01/2019	17256	ITEM D	40.848,00	63.198,00       0,203	8.292,14	5124	0	8.292,14
43514	C00003	CLIENTE 4	04/01/2019	17255	ITEM E	12.912,00	76.110,00      0,3736	4.823,92	5124	0	4.823,92
43516	C00003	CLIENTE 4	04/01/2019	18453	ITEM F	15.192,00	 91,302,00    0,2733	4.151,97	5124	0	4.151,97



Obrigado a todos.




Para ajudar preciso saber qual o seu banco de dados, porque exitem comandos diferentes entre eles, porém é possível sim.

Entra em contato.
Skype: anderson@case13.com.br



Meu banco é SQL Microsoft 2015, a consulta se dará internamente dentro do SAP Bussiness One, sei que o SAP tem sua particularidade a parte da consulta do SQL.

GOSTEI 0
Emerson Nascimento

Emerson Nascimento

25/02/2020

meio gambiarra, mas talvez te ajude:
SELECT 
	T2.[Serial] AS 'NF', 
	T2.[CardCode] AS 'CÓDIGO', 
	T2.[CardName] AS 'CLIENTE', 
	T2.[TaxDate] AS 'DATA', 
	T0.[ItemCode] AS 'ITEM', 
	T0.[Dscription] AS 'DESCRIÇÃO', 
	T0.[Quantity] AS 'QUANTIDADE', 
	(	SELECT 
			SUM(T0X.[Quantity]) QTD 
		FROM 
			INV1 T0X 
		INNER JOIN 
			OITM T1X ON T1X.[ItemCode] = T0X.[ItemCode] AND T1X.[QryGroup4] = 'Y' 
		INNER JOIN 
			OINV T2X ON T2X.[DocEntry] = T0X.[DocEntry] AND T2X.[CANCELED] = 'N' 
		WHERE 
			-- CONDICAO IGUAL À CONDICAO PRINCIPAL 
			T0X.[CFOPCode] <> '5949'                 
			AND (T2X.[TaxDate] >= [%1] OR [%1] = '') 
			AND (T2X.[TaxDate] <= [%2] OR [%2] = '') 
			-- UTILIZA OS CAMPOS INFORMADOS NO ORDER BY
			AND	(CONVERT(VARCHAR(8),T2X.[TaxDate],112)+T2X.[Serial]+T2X.[CardCode]+T0.[ItemCode]) <=
				(CONVERT(VARCHAR(8),T2.[TaxDate],112)+T2.[Serial]+T2.[CardCode]+T0.[ItemCode])
	) AS 'QTDACUM', 
	T0.[PriceBefDi] AS 'PREÇO', 
	T0.[Quantity] * T0.[PriceBefDi] AS 'VALOR TOTAL', 
	T0.[CFOPCode] AS 'CFOP', 
	T0.[VatSumSy] AS 'IPI + ICMS ST', 
	T0.[VatSumSy] + (T0.[Quantity] * T0.[PriceBefDi]) AS 'TOTAL COM IMPOSTO' 
FROM 
	INV1 T0 
INNER JOIN 
	OITM T1 ON T1.[ItemCode] = T0.[ItemCode] AND T1.[QryGroup4] = 'Y' 
INNER JOIN 
	OINV T2 ON T2.[DocEntry] = T0.[DocEntry] AND T2.[CANCELED] = 'N' 
WHERE 
	T0.[CFOPCode] <> '5949' 
	AND (T2.[TaxDate]  >= [%1] OR [%1] = '') 
	AND (T2.[TaxDate]  <= [%2] OR [%2] = '') 
ORDER BY 
	T2.[TaxDate], T2.[Serial], T2.[CardCode], T0.[ItemCode] 
GOSTEI 0
POSTAR