Inquiridor
Pesquisar uma determinada coluna da primeira linha for igual a algum valor

Pergunta
-
Caros,
eu tenho uma proposta, e dentro dela uma relacionamento onde tem N parcelas, estas podem ser parcelas do tipo, ato, repasse, mensal e etc.
porém eu preciso fazer um select onde uma coluna da primeira linha seja diferente de ato (1), tentei usar o top 1 , porém top1 traz apenas uma linha...
como pode ser feito?
obrigado
Todas as Respostas
-
-
Opa Weslley,
Eu tenho 3 propostas:
a , b e c.
A contém os registro de parcela do tipo , Ato, Anual , Repasse
B contém os registro de parcela do mesmo tipo porém em ordem cadastrada em inverso Anual, Ato, Repasse
C contém os registro de parcela do mesmo tipo porém em ordem cadastrada em inverso Repasse, Anual, Ato
Eu quero no meu select retornar apenas os registros cujo a proposta contenha apenas a primeira linha de relacionamento diferente de ATO.
espero q tenha ficado claro agora :-)
obrigado
-
-
-
Edilson
Tenho uma ideia, mas preciso que você poste as estruturas das tabelas envolvidas, quem é a pk da tabela de parcelas?
Att.
Marcelo Fernandes
MCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba -
Segue um exemplo
declare @tbProposta as table (idProposta int, dsProposta char(1)) insert into @tbProposta values (1,'A'),(2,'B'),(3,'C') declare @tbParcela as table (idProposta int, tipo varchar(10)) insert into @tbParcela values (1,'Ato'),(1,'Anual'),(1,'Repasse'), (2,'Anual'),(2,'Ato'),(2,'Repasse'), (3,'Repasse'),(3,'Anual'),(3,'Ato') ;with cte_dados as (select a.idProposta, a.dsProposta, b.tipo,row_number() over(partition by b.idProposta order by b.idProposta) as numerador from @tbProposta a inner join @tbParcela b on a.idProposta=b.idProposta ) select idProposta, dsProposta, tipo from cte_dados except select idProposta, dsProposta, tipo from cte_dados where numerador=1 and tipo='ato'
Att.
Marcelo Fernandes
MCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba -
-
Marcelo,
obrigado, acho que o caminho é este mas veja só, eu fiz algo errado, assim:
;with cte_dados as (select f.gaf_propostaid, f.gaf_tipoparcela, row_number() over(partition by f.gaf_propostaid order by f.gaf_propostaid) as numerador from Gaf_propostafinanceiro f ) select gaf_propostaid from cte_dados except select gaf_propostaid from cte_dados where numerador =1 and Gaf_TipoParcela <> 1
deste jeito esta me trazendo apenas as propostas que contém apenas a parcela do tipo 1 Ato.
obrigado,
-
Então Edilson, justamente por isto que queria ver as estruturas da tabela
o Propostaid é PK?
posta alguns exemplos de como estão os dados da tabela GAf_popostafinanceiro
Att.
Marcelo Fernandes
MCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba -
Olá Marcelo,
desculpe estar responde só agora, ontem estava sem 3g, wifi na facul e ai só vi o post hoje pela manhã, vou passar somente alguns campos das duas tabelas
Tabela
Nome:Quote
Campo: QuoteId PK (Guid)
CAmpo: QuoteNumber
Tabela:Gaf_PropostaFinanceiro
Campo:Gaf_PropostaFinanceiroId PK(Guid)
Campo:Gaf_PropostaId FK (Guid) references Quote on QuoteId
Campo:Gaf_TipoParcela (Int)
são estes campos, tem muito mais, mas estes que me interessam para esta consulta, na verdade acho q da pra fazer só com a segunda tablea. (gaf_propostafinanceiro).
abraços e obrigado
-
Edilson
testa assim
;with cte_dados as (select f.gaf_propostaid, f.gaf_tipoparcela, row_number() over(partition by f.gaf_propostaid order by f.gaf_propostaid) as numerador from Gaf_propostafinanceiro f ) select gaf_propostaid from cte_dados except select gaf_propostaid from cte_dados where numerador =1 and Gaf_TipoParcela = 1
Qual o datatype da coluna gaf_propostaid? se for uniqueidentifier você poderá ter um problema, pois o plano de execução poderá usar a PK para organizar os registros, ou seja a ordem que vc inseriu não será a ordem apresentada... mas testa ae....
Att.
Marcelo Fernandes
MCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba -
Opa,
então,não deu certo, deve ser pelo uniqueidentifier mesmo, ai ferrou, acho q somente fazendo um cursor e inserindo em uma tabela temporaria onde crio um campo do tipo int, e ai pesquiso sem ordernar por nada e então deve trazer do jeito q foi inserido, e então fazer este seu comando, o que acha?
tens algum exeplo de cursor inserindo em tabela temporaria?
obrigado
-
Edilson
também não vai dar certo... pois ao pesquisar na tabela fisica e inserir na temporária o SQL vai usar a ordenação da PK que vai bagunçar a ordem em que foi inserida, para acertar este problema você deverá alterar sua tabela, inserindo um campo indentity ou um campo dtCadastro onde vc pode ordernar por um destes campos o que vai lhe garantir a ordem de inserção.
Att.
Marcelo Fernandes
MCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba -
Puxa Marcelo, uma pena, pois não posso mudar o tipo de dados, estas tabelas são do Dynamics CRM que trabalho, e isto é autoconfigurável e não pode ser mexido por práticas da microsoft, aquela coisa toda...
mas pera ai, eu tenho um campo que armazena a data de alteração / inserção será que não da pra usar ele?