Ir para conteúdo

POWERED BY:

Arquivado

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

Adriano.Oliveira

criando campo de tabela com variavel

Recommended Posts

Pessoal,

 

Tenho a seguinte dúvida,

Preciso criar uma tabela com a venda dos últimos tre meses. E o nome do cam poda tabela precisa ser mes:

 

Por exemplo:

 

Vendedor mar2009 fev2009 jan2009

Vend1 100,00 200,00 10,00

Vend2 300,00 40,00 90,00

 

já tenho uma variável definid com o nome de cada mes... Agora a dúvida é de como colocar esse nome no campo:

Tem como fazer isso?

 

Muito Obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca sua query ou um exemplo pra facilitar o entendimento

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca sua query ou um exemplo pra facilitar o entendimento

 

 

Veja bem..

Eu tinha pensado em fazer uma tabela temporária com os clientes com movimento nos tres meses e mais tres tabelas com o resultado em cada mes.. E depois um insert numa tabela que agruparia o resultado. Como sao poucos vendedores as tabelas não ficarão pesadas.

 

A questão que encontrei foi a seguinte.. Nesse mes os resultados que aparecerão serão março, fevereiro e janeiro... No mes que vem abr, mar, fev.. como é que eu faço pra colocar esses valores como titulo da coluna onde está o total..

 

Já me desculpando por ser um código de Aprendiz, veja o exemplo:

 


/********************************************************************************
*******************************
	BLOCO 01
GRAVA TABELA TEMP COM TRES ÚLTIMOS MESES
********************************************************************************
*******************************/

declare @ano1 varchar(20), @ano2 varchar(20), @ano3 varchar(20), @ano4 varchar(20), 
		@Meses1 varchar(20), @Meses2 varchar(20), @Meses3 varchar(20), @Meses4 varchar(20)

select 
@Meses1 = Datepart(Mm,getdate()) , 
@ano1 = Datepart(Yy,getdate()) 

if  Datepart(Mm,getdate()) - 1 < 1  SET @Meses2 = 12 + ( Datepart(Mm,getdate()) -1) 
if  Datepart(Mm,getdate()) - 1 >= 1  SET @Meses2 = ( Datepart(Mm,getdate()) -1) 
if @Meses2 > @Meses1 set @ano2 = @ano1 - 1
if @Meses2 < @Meses1 set @ano2 = @ano1 

if  Datepart(Mm,getdate()) - 2 < 1  SET @Meses3 = 12 + ( Datepart(Mm,getdate()) -2) 
if  Datepart(Mm,getdate()) - 2 >= 1  SET @Meses3 = ( Datepart(Mm,getdate()) -2)  
if @Meses3 > @Meses2 set @ano3 = @ano1 - 1
if @Meses3 < @Meses2 set @ano3 = @ano1 
-- Quarto mes não é utilizado foi para testes de mudança de ano.
if  Datepart(Mm,getdate()) - 3 < 1  SET @Meses4 = 12 + ( Datepart(Mm,getdate()) -3) 
if  Datepart(Mm,getdate()) - 3 >= 1  SET @Meses4 = ( Datepart(Mm,getdate()) -3)  
if @Meses4 > @Meses3 set @ano4 = @ano1 - 1
if @Meses4 < @Meses3 set @ano4 = @ano1 
---
IF EXISTS (SELECT * FROM tempdb.dbo.sysobjects WHERE id = object_id(N'tempdb.dbo.#MESES') AND xtype = 'U')
DROP TABLE #MESES
CREATE TABLE #MESES (Meses_1 varchar(20) NULL , Meses_2 varchar(20) NULL , Meses_3 varchar(20) NULL , Ano_1 varchar(20) NULL , Ano_2 varchar(20) NULL , Ano_3 varchar(20) NULL  )

insert #MESES (Meses_1, Meses_2, Meses_3, Ano_1, Ano_2, Ano_3) values (  @Meses1, @ano1, @Meses2, @ano2, @Meses3, @ano3)



/********************************************************************************
*******************************
	BLOCO 02
GRAVA TABELA TEMP COM VENDAS POR MES, E CLIENTES COM MOVIMENTO.
********************************************************************************
*******************************/
declare @ano1_ varchar(20), @ano2_ varchar(20), @ano3_ varchar(20), @Meses1_ varchar(20), @Meses2_ varchar(20), @Meses3_ varchar(20),
		@l_mes1 varchar(20), @l_mes2 varchar(20), @l_mes3 varchar(20)

 
select @Meses1_ =  Meses_1 , @ano1_ = Ano_1, @Meses2_ =  Meses_2, @ano2_ = Ano_2, @Meses3_ = Meses_3, @ano3_ = Ano_3 from  #MESES  

select @l_mes1 =  @Meses1_ + '/' + @ano1_   from  #MESES


--- CLIENTES COM MOVIMENTO
IF EXISTS (SELECT * FROM tempdb.dbo.sysobjects WHERE id = object_id(N'tempdb.dbo.#CLI_MOV') AND xtype = 'U')
DROP TABLE #CLI_MOV

select  codigo_vendedor, fantasia_vendedor,  cod_cliente, razao_social   into  #CLI_MOV
from vw_mgiro_embarques
where  Datepart(Yy,vw_mgiro_embarques.data_titulo ) in (@ano1_ , @ano2_, @ano3_)
	   and   Datepart(Mm,vw_mgiro_embarques.data_titulo ) in ( @Meses1_ , @Meses2_, @Meses3_) 
	   and id_fornecedor = 58
	   and isnull (vw_mgiro_embarques.codigo_vendedor, 999999 ) <> 999999
group by codigo_vendedor, fantasia_vendedor,  cod_cliente, razao_social 


--- MOVIMENTO MES 01
IF EXISTS (SELECT * FROM tempdb.dbo.sysobjects WHERE id = object_id(N'tempdb.dbo.#MOV_MES01') AND xtype = 'U')
DROP TABLE #MOV_MES01


--- Aqui vai entrar outro insert...
 
select  codigo_vendedor, cod_cliente, sum ( valor_liquido) as   @l_mes1	
from vw_mgiro_embarques
where  Datepart(Yy,vw_mgiro_embarques.data_titulo ) = @ano1_ 
	   and   Datepart(Mm,vw_mgiro_embarques.data_titulo ) in ( @Meses1_ , @Meses2_, @Meses3_) 
	   and id_fornecedor = 58
	   and isnull (vw_mgiro_embarques.codigo_vendedor, 999999 ) <> 999999
group by codigo_vendedor, cod_cliente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já me desculpando por ser um código de Aprendiz

nao se preocupe ;)

 

Bom, eu faria com subselect a soma por mes, mais ou menos assim:

create table #mes01 (id int, vendedor varchar(100), vendas int, data datetime)
create table #mes02 (id int, vendedor varchar(100), vendas int, data datetime)
create table #mes03 (id int, vendedor varchar(100), vendas int, data datetime)

insert into #mes01 values (1, 'zé', 1000, '2008-01-01')
insert into #mes01 values (2, 'zé lelé', 500, '2008-01-01')
insert into #mes01 values (3, 'zéca', 5, '2008-01-01')


insert into #mes02 values (1, 'zé', 234, '2008-02-01')
insert into #mes02 values (2, 'zé lelé', 678, '2008-02-01')
insert into #mes02 values (3, 'zéca', 99, '2008-02-01')


insert into #mes03 values (1, 'zé', 125, '2008-03-01')
insert into #mes03 values (2, 'zé lelé', 457, '2008-03-01')
insert into #mes03 values (3, 'zéca', 67, '2008-03-01')


select
vendedor 
, sum (vendas) as vendas_mes01
,(select sum(vendas) from #mes02 where id = #mes01.id) as #mes02
,(select sum(vendas) from #mes03 where id = #mes01.id) as #mes03
from #mes01
group by id, vendedor


drop table #mes01
drop table #mes02
drop table #mes03

Um ideia neh ;)

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.