Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia, pessoal.
Estou com um problema no meu modelo de dados, poderiam, por gentileza, me auxiliar em como resolvê-lo?
Id Nº do Pedido Data do Pedido Data do Registro
1 3333 05/06/2018 08/06/2018
1 4444 05/06/2018 11/06/2019
2 5555 02/03/2018 03/03/2018
3 3322 05/06/2018 02/07/2018
3 4499 10/07/2019 10/07/2019
Possuo o mesmo ID para números de pedidos diferentes. A regra negocial seria: qnd tiver o msm id para números de pedidos diferentes, pegar o número de pedido com a data do pedido mais recente. Se a data de pedido for igual, pegar o nºo do processo pela data de cadastro mais recente.
Ideias?
Desde já, agradeço a participação dos colegas.
Boa Tarde,
Só uma duvida, seus números de pedidos são sequenciais ou randômicos?
Veja se isso pode lhe atender.
dados:
LOAD * Inline [
Id, Pedido, DataPedido, DataRegistro
1, 3333, 05/06/2018, 08/06/2018
1, 4444, 05/06/2018, 11/06/2019
2, 5555, 02/03/2018, 03/03/2018
3, 3322, 05/06/2018, 02/07/2018
3, 4499, 10/07/2019, 10/07/2019
];
QUALIFY*;
UNQUALIFY;
dados2:
LOAD
FirstSortedValue(Id,Pedido) as Id,
FirstSortedValue(DataPedido,Pedido) as DataPedido,
FirstSortedValue(Pedido,Pedido) as Pedido,
FirstSortedValue(DataRegistro,DataRegistro) as DataRegistro
Resident dados Group by Id ;
UNQUALIFY*;
Alterando um pouco a solução do Danilo.
Dados1:
LOAD * Inline [
Id, Pedido, DataPedido, DataRegistro
1, 3333, 05/06/2018, 08/06/2018
1, 4444, 05/06/2018, 11/06/2019
2, 5555, 02/03/2018, 03/03/2018
3, 3322, 05/06/2018, 02/07/2018
3, 4499, 10/07/2019, 10/07/2019
];
Dados2:
LOAD
FirstSortedValue(Id,Pedido) as Id2,
FirstSortedValue(DataPedido,-DataRegistro) as DataPedido2,
FirstSortedValue(Pedido,-DataRegistro) as Pedido2,
FirstSortedValue(DataRegistro,-DataRegistro) as DataRegistro2
Resident Dados1
Group by Id ;
Obrigada pelas respostas, pessoal.
Estou com um erro qnd carrego o script, acho que pode ter a ver com meus campos de data terem valores nulos e até mesmo alguns caracteres diferentes. =/
Teria como fazer uma regra onde escolho o nº do pedido de acordo com o id de número maior?
Exemplo:
ID 1 teria como nº do pedido o 4444.
Boa tarde,
Se seu campo de Numero de pedido for sequencial, você pode criar uma medida com max(N pedido) e dimensionar pelo id, assim lhe trará o numero de pedido mais recente independente da data.
Legal..
Tentei colocar no script mas deu erro.
Dados1:
LOAD * Inline [
Id, Pedido, DataPedido, DataRegistro
1, 3333, 05/06/2018, 08/06/2018
1, 4444, 05/06/2018, 11/06/2019
2, 5555, 02/03/2018, 03/03/2018
3, 3322, 05/06/2018, 02/07/2018
3, 4499, 10/07/2019, 10/07/2019
];
Dados2:
LOAD
Id as Id2,
Max(Pedido) as Pedido2,
DataPedido as DtPed2,
DataRegistro as DtReg
Resident Dados1
Group by Id ;
O que estou fazendo de errado?
Agregação via script é necessário colocar os demais campos sem agregação do Group By.
Dados2:
LOAD
Id as Id2,
Max(Pedido) as Pedido2,
DataPedido as DtPed2,
DataRegistro as DtReg
Resident Dados1
Group by Id, DataPedido, DataRegistro ;
Bom dia,
Se eu entendi direito você não quer mostrar apenas os pedidos mais recentes para cada id, certo?
você quer manter todos os registos e apenas diferenciar o numero do id?
Se for isso você pode reescrever o campo id como uma sequencia numérica usando RowNo,
Teste:
Load*Inline
[
id,N pedido,data P,Data r
1,3333,05/06/2018,08/06/2018
1,4444,05/06/2018,11/06/2019
2,5555,02/03/2018,03/03/2018
3,3322,05/06/2018,02/07/2018
3,4499,10/07/2019,10/07/2019];
Store Teste into [lib://Teste/Teste.qvd] (qvd);
Drop Table Teste;
Load
RowNo() as id,
[N pedido],
[data P],
[Data r]
From [lib://Teste/Teste.qvd] (qvd);