update relacional
27/01/2006
0
Bem. Preciso atualizar a data e o valor da maior compra do cliente.
Estes campos(dt_maior_compra e vl_maior_compra) estão na tabela cliente e precisam ser atualizados de uma outra tabela faturamento( total_geral, data_nf) respectivamente
ja tentei com tabela temporaria mas nao consigo atualizar a data
Crate Table #ClienteTemp
(Codigo Int,
Data SmallDateTime,
Valor Float)
Insert CclienteTemp(Codigo,Data,Valor)
(Select Top 1 F.Cod_Cliente,F.Data_NF,Max(F.Total_Geral)
From Fatura F
Group By F.Cod_Cliente,F.Data_NF )
--atualiza a tabela temporaria na tabela real de cliente
Update Cliente Set
Cliente.Vl_Maior_Compra = ClienteTemp.Valor,
Cliente.Dt_Maior_Compra = ClienteTemp.Data
From Cliente,ClienteTemp
Where Cliente.Cod_Cli = ClienteTemp.Codigo
--apaga a tabela temporaria
Drop Table #ClienteTemp
GO
Decandido21
Posts
28/01/2006
Emerson Nascimento
Update cli set cli.Vl_Maior_Compra = isnull(fat.Total_Geral,0), cli.Dt_Maior_Compra = isnull(fat.Data_NF,getdate()) from Cliente cli left join (select Cod_Cliente, max(Total_Geral) Total_Geral, max(Data_NF) Data_NF from Fatura group by Cod_Cliente) fat on fat.Cod_Cliente = cli.Cod_Cli
28/01/2006
Decandido21
A tua string retornou sim o valor da maior compra.
Agora a data não é a maior data que preciso retornar e sim a data que foi feita esta compra(maior compra).
Consegui resolver com duas string uma para cada processo:
--1ª string atualiza o valor da maior compra na tabela cliente
Update cliente set
cliente.vl_Maior_Compra =
(select max(total_geral)
from fatura
where cod_cliente = cliente.cod_cliente)
--2ª string atualiza a data que foi feita a maior compra na tabela clientes
Update cliente set
cliente.dt_Maior_Compra =
(select top 1 data_nf
from fatura
where cod_cliente = cliente.cod_cliente
order by total_geral desc)
obrigado
29/01/2006
Emerson Nascimento
tente assim:
Update cli set cli.Vl_Maior_Compra = isnull(fat.Total_Geral,0), cli.Dt_Maior_Compra = isnull(fat.Data_NF,getdate()) from Cliente cli left join (select top 1 Cod_Cliente, Total_Geral, Data_NF from Fatura group by Cod_Cliente order by Total_Geral desc) fat on fat.Cod_Cliente = cli.Cod_Cli
29/01/2006
Emerson Nascimento
Update cli set cli.Vl_Maior_Compra = isnull(fat.Total_Geral,0), cli.Dt_Maior_Compra = isnull(fat.Data_NF,getdate()) from Cliente cli left join (select top 1 Cod_Cliente, Total_Geral, Data_NF from Fatura where Fatura.Cod_Cliente = cli.Cod_Cli order by Total_Geral desc) fat on fat.Cod_Cliente = cli.Cod_Cli
Clique aqui para fazer login e interagir na Comunidade :)