Distinct com critério
Boa noite.
Na verdade estou abrindo este post por não saber como procurar respostas as minhas necessidades, pois é algo que nem sei se é possível.
Preciso selecionar dados eliminando registros repetidos em uma tabela. Por isso pesquisei sobre a opção DISTINCT. Ok. Porém... preciso eliminar os registros repetidos mas mantendo o registro repetido que tenha um determinado valor.
Por exemplo:
[img:descricao=Exemplo de tabela]http://arquivo.devmedia.com.br/forum/imagem/402352-20141215-190803.jpg[/img]
Veja a coluna Codigo. As linha que levam 425a-5. Este código está duplicado e preciso deixar ele único na consulta, porém, preciso preservar a linha que tenha o valor 4 na coluna PICM.
Preciso deixar sem repetições, mas que fiquem os registros que tenha o valor 4 na coluna PICM.
O mesmo acontece nas duas ultimas linhas. O código 528a-5 se repetem. Preciso apenas da linha que tem o valor 4 na coluna PICM.
Espero ter sido claro o suficiente e agradeço desde já a ajuda de algum colaborador deste comunidade.
Muito obrigado.
Na verdade estou abrindo este post por não saber como procurar respostas as minhas necessidades, pois é algo que nem sei se é possível.
Preciso selecionar dados eliminando registros repetidos em uma tabela. Por isso pesquisei sobre a opção DISTINCT. Ok. Porém... preciso eliminar os registros repetidos mas mantendo o registro repetido que tenha um determinado valor.
Por exemplo:
[img:descricao=Exemplo de tabela]http://arquivo.devmedia.com.br/forum/imagem/402352-20141215-190803.jpg[/img]
Veja a coluna Codigo. As linha que levam 425a-5. Este código está duplicado e preciso deixar ele único na consulta, porém, preciso preservar a linha que tenha o valor 4 na coluna PICM.
Preciso deixar sem repetições, mas que fiquem os registros que tenha o valor 4 na coluna PICM.
O mesmo acontece nas duas ultimas linhas. O código 528a-5 se repetem. Preciso apenas da linha que tem o valor 4 na coluna PICM.
Espero ter sido claro o suficiente e agradeço desde já a ajuda de algum colaborador deste comunidade.
Muito obrigado.
José Jacinto
Curtidas 0
Melhor post
Marisiana Battistella
18/12/2014
É isso Alex!
Se não incluir a data no SELECT e no GROUP BY não vai detalhar a informação pela data....
Se não incluir a data no SELECT e no GROUP BY não vai detalhar a informação pela data....
GOSTEI 1
Mais Respostas
Claudio Lopes
15/12/2014
Primeiro vou pela logica... já colocou "WHERE PICM = 4"?
caso contrário você precia também dos valores diferentes do PICM 4?
caso contrário você precia também dos valores diferentes do PICM 4?
GOSTEI 0
José Jacinto
15/12/2014
Opa. Obrigado pela força Din.
Eu preciso dos outros valores também. Quero eliminar todos os repetidos mantendo os registros que tenham valor 4 mas em registros que tenham outros valores também preciso preserva-los.
Obrigado.
Eu preciso dos outros valores também. Quero eliminar todos os repetidos mantendo os registros que tenham valor 4 mas em registros que tenham outros valores também preciso preserva-los.
Obrigado.
GOSTEI 0
Alex Lekao
15/12/2014
Ola Jose, bom dia!!!
Deixa eu entender melhor sua situacao, a coluna PICM vc precisa preserva-la, porque a necessidade de preservar especificamente o 4 e nao o 12, por exemplo, nao seria o caso de soma-las?
Normalmente vc poderia utilizar uma opcao chamada group by, que acredito resolveria o seu problema.
Segue abaixo uma sugestao, imaginando que o que vc queira eh que a Coluna PICM apresente sempre o menor valor da coluna.
Como estou inserindo o codigo direto sem pensar muito nem testar, se der erro acusando a coluna picm, coloque-a tambem no group by.
Espero ter ajudado.
Abraco.
Deixa eu entender melhor sua situacao, a coluna PICM vc precisa preserva-la, porque a necessidade de preservar especificamente o 4 e nao o 12, por exemplo, nao seria o caso de soma-las?
Normalmente vc poderia utilizar uma opcao chamada group by, que acredito resolveria o seu problema.
Segue abaixo uma sugestao, imaginando que o que vc queira eh que a Coluna PICM apresente sempre o menor valor da coluna.
select codido, un, min(picm) as picm, dtdigit from sua_tabela Where dtdigit between 'uma data inicial' and 'uma data final' group by codigo,un,dtdigit
Como estou inserindo o codigo direto sem pensar muito nem testar, se der erro acusando a coluna picm, coloque-a tambem no group by.
Espero ter ajudado.
Abraco.
GOSTEI 0
José Jacinto
15/12/2014
Bom dia a todos,
A situação é a seguinte:
Tenho uma lista de itens que são comprados de fornecedores e ao inserir em meu sistema estes itens vão sendo gravados na tabela a cada compra. Por isso podem se repetir. A coluna PICM é a coluna que recebe a alíquota de ICMS. Como são itens comprados de fornecedores diferentes estes itens são comprados com alíquotas diferentes variando entre 4 e 12.
A minha necessidade é a seguinte:
Preciso relacionar todos estes itens sem repeti-los. Todos os itens sem exceção. Mas se algum item já recebeu a alíquota de 4% em alguma compra eu queria que o SELECT pegasse este registro montando assim uma lista de todos os itens mas usando o registro com 4% onde ocorreu.
Resumindo:
O select pega todos eliminando repetidos, mas onde encontrar itens com o valor 4 no PICM eu queria usar este registro.
Espero ter esclarecido. Obrigado a todos. Aguardo.
A situação é a seguinte:
Tenho uma lista de itens que são comprados de fornecedores e ao inserir em meu sistema estes itens vão sendo gravados na tabela a cada compra. Por isso podem se repetir. A coluna PICM é a coluna que recebe a alíquota de ICMS. Como são itens comprados de fornecedores diferentes estes itens são comprados com alíquotas diferentes variando entre 4 e 12.
A minha necessidade é a seguinte:
Preciso relacionar todos estes itens sem repeti-los. Todos os itens sem exceção. Mas se algum item já recebeu a alíquota de 4% em alguma compra eu queria que o SELECT pegasse este registro montando assim uma lista de todos os itens mas usando o registro com 4% onde ocorreu.
Resumindo:
O select pega todos eliminando repetidos, mas onde encontrar itens com o valor 4 no PICM eu queria usar este registro.
Espero ter esclarecido. Obrigado a todos. Aguardo.
GOSTEI 0
Alex Lekao
15/12/2014
Oi Jose,
Nesse caso, o que vc precisa eh especificamente os itens com 4% de aliquota de icms.
Este caso, vc usa a sugestao dada pelo Din, e o agrupamento que sugeri, o codigo ficara como abaixo.
Espero ter ajudado.
Abraco.
Nesse caso, o que vc precisa eh especificamente os itens com 4% de aliquota de icms.
Este caso, vc usa a sugestao dada pelo Din, e o agrupamento que sugeri, o codigo ficara como abaixo.
select codido, un, picm, dtdigit from sua_tabela Where dtdigit between 'uma data inicial' and 'uma data final' and picm = 'valor da aliquota' group by codigo,un,picm,dtdigit
Espero ter ajudado.
Abraco.
GOSTEI 0
José Jacinto
15/12/2014
[img]http://arquivo.devmedia.com.br/forum/imagem/402352-20141217-144331.jpg[/img]
GOSTEI 0
José Jacinto
15/12/2014
O que preciso seria isso:
[img]http://arquivo.devmedia.com.br/forum/imagem/402352-20141217-144409.jpg[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/402352-20141217-144409.jpg[/img]
GOSTEI 0
Marisiana Battistella
15/12/2014
Utilize o mesmo SQL da penúltima imagem, mas sem incluir a coluna SD1010.D1_DTDIGIT...
GOSTEI 0
Alex Lekao
15/12/2014
O problema nesse caso eh o agrupamento das datas.
por isso ainda repete.
por isso ainda repete.
GOSTEI 0
Alex Lekao
15/12/2014
nao vejo outra solucao. rsrsr
Talvez se for realmente necessario, ai teria que utilizar uma subselect talvez, mas se colocar, vai repetir, nao tem jeito. rsrs
Talvez se for realmente necessario, ai teria que utilizar uma subselect talvez, mas se colocar, vai repetir, nao tem jeito. rsrs
GOSTEI 0
José Jacinto
15/12/2014
Olá pessoal. Obrigado pela ajuda. Era a data mesmo. Porém, o objetivo que queria alcançar ainda não foi possível, mas já consigo atender a minha necessidade. Obrigado pela força.
GOSTEI 0
Alex Lekao
15/12/2014
o que mais vc precisa e esta faltando?
GOSTEI 0
Marisiana Battistella
15/12/2014
Por nada José!
Se quiser descrever o que está faltando, talvez possamos ajudá-lo....
Se quiser descrever o que está faltando, talvez possamos ajudá-lo....
GOSTEI 0
José Jacinto
15/12/2014
Boa tarde. Me perdoem pela inatividade, porém pode-se fechar este post. Muito obrigado.
GOSTEI 0
Alex Lekao
15/12/2014
resolveu!?
GOSTEI 0
José Jacinto
15/12/2014
Resolvemos de outra forma. Obrigado.
GOSTEI 0
Marisiana Battistella
15/12/2014
Você poderia compartilhar conosco a solução encontrada?
GOSTEI 0
José Jacinto
15/12/2014
Na verdade o ERP usado na empresa acabou nos atendendo sem a necessidade de montar o BI pelo SQL SERVER. Obrigado.
GOSTEI 0
Marisiana Battistella
15/12/2014
Ok.. Obrigada por responder!
GOSTEI 0