Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Boris

Resumo de Valores

Recommended Posts

Ola Galera estou com um problema pra montar um resumo

 

 

Eu tenho 5 tipos de pagamento

 

 

Cartão Credito

Cheque

Dinheiro

Cartão

Cheque Pré-Datado

 

Os seguintes registros

 

1 produto 1 100,00 Dinheiro

2 produto 2 150,00 Cartão Credito

3 produto 3 130,00 Cheque

4 produto 4 50,00 Dinheiro

5 produto 5 150,00 Cartão Credito

6 produto 6 120,00 Cheque

7 produto 7 100,00 Cartão

8 produto 8 100,00 Cartão

9 produto 9 170,00 Cheque Pré-Datado

10 produto 10 230,00 Cheque Pré-Datado

 

E estou tentando fazer um Resumo da seguinte forma

 

500,00 Cartão (Cartão Credito + Cartão)

650,00 Cheque (Cheque + Cheque Pré-Datado )

150,00 Dinheiro

1300,00 Total

 

Alguem poderia me ajudar nesse desafio...

 

Tentei dar um select assim:

 

select sum(valor) as valor from venda group by forma_pgto

 

So que me aparece desta foma

 

200

300

250

400

150

 

Não estou conseguindo nem fazer com que apareça a condição do lado correspondente a cada valor resumo.

 

Alguem poderia me ajudar ou dar uma pista de como eu poderia tentar solucionar... obrigado

 

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, essa primeira parte deu certo

 

Dinheiro 150

Cheque Pré-Datado 400

Cheque 250

Cartão Credito 300

Cartão 200

 

 

mas não estou conseguindo montar esse resumo abaixo...

 

500 Cartão (Cartão Credito + Cartão)

650 Cheque (Cheque + Cheque Pré-Datado )

150 Dinheiro

1300 Total

 

como eu poderia fazer ?

 

Valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá TioPirata, obrigado pela força, meus registros estão da seguinte forma:

 

 

Sim eu quero concatenar mas lembrando que estes campos não são colunas diferentes e sim estão na mesma coluna

 

id | desc_prod | valor | forma_pgto

-------------------------------------------------------------------

1 produto 1 100,00 Dinheiro

2 produto 2 150,00 Cartão Credito

3 produto 3 130,00 Cheque

4 produto 4 50,00 Dinheiro

5 produto 5 150,00 Cartão Credito

6 produto 6 120,00 Cheque

7 produto 7 100,00 Cartão

8 produto 8 100,00 Cartão

9 produto 9 170,00 Cheque Pré-Datado

10 produto 10 230,00 Cheque Pré-Datado

-------------------------------------------------------------------

 

E estou tentando pegar estas vendas e resumir assim:

Tendo uma linha complementar com o valor total

 

 

Valew pela força TioPirata

 

500,00 Cartão (Cartão Credito + Cartão)

650,00 Cheque (Cheque + Cheque Pré-Datado )

150,00 Dinheiro

1300,00 Total

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei entendi direito, mas para concatenar, voce pode fazer assim:

 

SELECT ID, CAMPO1 +''+ CAMPO2 AS UNIAODOSCAMPOS FROM TABELA

para o lance do "cartao (cartao + cartao de credito)

acredito que você pode usar o case, da uma olhada sobre case nesse link:

 

http://www.java2s.com/Tutorial/SQLServer/0.../0460__Case.htm

 

 

Aproveito para recomendar esse site, é muito bom para referencias.

 

http://www.java2s.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ve se isso te da uma luz:

create table #temp (id int, desc_prod varchar(100), valor int, forma_pgto varchar(100))


insert into #temp values (1,'produto 1 ',100, 'Dinheiro')
insert into #temp values (2,'produto 2 ',150, 'Cartão Credito')
insert into #temp values (3,'produto 3 ',130, 'Cheque')
insert into #temp values (4,'produto 4 ',50, 'Dinheiro')
insert into #temp values (5,'produto 5 ',150, 'Cartão Credito')
insert into #temp values (6,'produto 6 ',120, 'Cheque')
insert into #temp values (7,'produto 7 ',100, 'Cartão')
insert into #temp values (8,'produto 8 ',100, 'Cartão')
insert into #temp values (9,'produto 9', 170, 'Cheque Pré-Datado')
insert into #temp values (10,'produto 10', 230,'Cheque Pré-Datado')


-- TRABALHO SOMENTE COM VALORES DE CARTAO
create table #cartao (id int, desc_prod varchar(100), valor int, forma_pgto varchar(100))

insert into #cartao (forma_pgto,valor)
select 'Cartão'
, sum(valor) as valor 
from #temp t
where t.forma_pgto in ('cartão','cartão credito')
group by t.forma_pgto


-- TRABALHO SOMENTE COM VALORES DE CHEQUE
create table #cheque (id int, desc_prod varchar(100), valor int, forma_pgto varchar(100))

insert into #cheque (forma_pgto,valor)
select 'Cheque'
, sum(t.valor) as valor 
from #temp t
where t.forma_pgto in ('cheque', 'cheque pré-datado')
group by t.forma_pgto


-- INSIRO NA TABELA FINAL O VALOR EM $$
create table #TOTALIZADOR (id int, desc_prod varchar(100), valor int, forma_pgto varchar(100))
insert into #totalizador (forma_pgto,valor)
select 'Dinheiro'
, sum(valor) as valor 
from #temp t
where t.forma_pgto not in ('cartão','cartão credito', 'cheque', 'cheque pré-datado')
group by t.forma_pgto


-- INSIRO AGORA A SOMATORIO DE CHEQUE E CARTAO
insert into #totalizador (forma_pgto,valor)
SELECT forma_pgto,valor from #cartao

insert into #totalizador (forma_pgto,valor)
SELECT forma_pgto,valor from #cheque

select forma_pgto,sum(valor) as valor from #totalizador group by forma_pgto


drop table #temp
drop table #cartao
drop table #cheque
drop table #totalizador

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Noiter Jus2ka, criando uma tabela temporaria deu certo mas eu tentei alterar para fazer o mesmo processo em uma tabela fisica e não consegui, desculpa eu sou leigo, mas da maneira que você fez deu certinho é exatamente isso que eu preciso apenas acrescentado uma linha com o valor total no final, qual a dica que vcs podeiram me dar pra fazer....

 

Obrigado galera e desculpa a minha ignorancia prometo que assim que tiver prontinho eu post no forum...

 

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poderia postar a estrutura da sua tabela fisica que tem?! Pode ser que minha tabela temporaria esteja diferente, vai saber neh, ouuuuu

substitui #temp (somente a #temp) pelo nome da sua tabela fisica e ve se rola ok?!

e ao fato de ser leigo, nao se preocupe, a ideia do forum eh ajudar ;)

Se nao ficou claro, pode postar ok?!

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valew Jus2ka,

 

Descrição da Tabela venda

----------------------------------------------

ID int 4

Produto varchar 80

Valor numeric 5

Forma_Pgto varchar 30

 

 

------------------------------------------------------------------

id Produto Valor forma_pgto

-----|-------------------|---------|------------------------------

1 produto 1 100 Dinheiro

2 produto 2 150 Cartão Credito

3 produto 3 130 Cheque

4 produto 4 50 Dinheiro

5 produto 5 150 Cartão Credito

6 produto 6 120 Cheque

7 produto 7 100 Cartão

8 produto 8 100 Cartão

9 produto 9 170 Cheque Pré-Datado

10 produto 10 230 Cheque Pré-Datado

-----|-------------------|---------|------------------------------

 

 

Código alterado de #temp para venda

 

-- TRABALHO SOMENTE COM VALORES DE CARTAO

create table #cartao (id int, produto varchar(100), valor int, forma_pgto varchar(100))

 

insert into #cartao (forma_pgto,valor)

select 'Cartão'

, sum(valor) as valor

from venda t

where t.forma_pgto in ('cartão','cartão credito')

group by t.forma_pgto

 

 

-- TRABALHO SOMENTE COM VALORES DE CHEQUE

create table #cheque (id int, produto varchar(100), valor int, forma_pgto varchar(100))

 

insert into #cheque (forma_pgto,valor)

select 'Cheque'

, sum(t.valor) as valor

from venda t

where t.forma_pgto in ('cheque', 'cheque pré-datado')

group by t.forma_pgto

 

 

-- INSIRO NA TABELA FINAL O VALOR EM $$

create table #TOTALIZADOR (id int, produto varchar(100), valor int, forma_pgto varchar(100))

insert into #totalizador (forma_pgto,valor)

select 'Dinheiro'

, sum(valor) as valor

from venda t

where t.forma_pgto not in ('cartão','cartão credito', 'cheque', 'cheque pré-datado')

group by t.forma_pgto

 

 

-- INSIRO AGORA A SOMATORIO DE CHEQUE E CARTAO

insert into #totalizador (forma_pgto,valor)

SELECT forma_pgto,valor from #cartao

 

insert into #totalizador (forma_pgto,valor)

SELECT forma_pgto,valor from #cheque

 

select forma_pgto,sum(valor) as valor from #totalizador group by forma_pgto

 

===============================================================

 

Quando eu faço a seleção de todo o codigo que coloquei acima e mando executar aparece a seguinte mensagem:

 

Server: Msg 2714, Level 16, State 6, Line 1

There is already an object named '#cartao' in the database.

 

onde será que estou errando...

 

Obrigado pela força...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boris,

este erro:

There is already an object named '#cartao' in the database.

eh pq jah existe esta tabela temporaria. você esta rodando com os drop table tb?

 

 

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo.

Depois de

select forma_pgto,sum(valor) as valor from #totalizador group by forma_pgto

 

coloque:

 

drop table #cartao

drop table #cheque

drop table #totalizador

 

As tabelas temporarias sao usadas por conexao somente, enqto a conexao estiver aberta ela pode ser usada, entao se ela nao for "dropada" ela vai estar lah ;)

 

Veja se funciona ^^

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.