Ir para conteúdo

POWERED BY:

Arquivado

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

Lab Design

Como criar essa stored procedure

Recommended Posts

É seguinte:

Eu preciso montar um gridview usando o resultado de tres tabelas sendo que:

a primeira notasfiscais - selecionar os registros dentro de um range de datas e somar o campo pontos para cada usuario, portanto eu tenho n registros para o mesmo usuário, eu preciso retornar somente 1 registro informando o nome do usuário e o total das notas, e linkado ao nome, deve vir o nome da empresa a que ele pertence.

 

A tabela de notasfiscais possui os campos idUsuario e idDistrib que relaciona com as duas tabelas, eu nao posso usar o Sum() na query porque vai dar erro de group então qual seria a melhor solução.

 

Seria essa?

- criar uma tabela temporária e alimentar ela inicialmente com os usuários usando o distinct(idUsuario) criar um campo de total como inicio em 0. uma vez alimentado essa tabela, teria que percorrê-la linha a linha efetuando um sum() na tabela de notasfiscais onde o idUsuario fosse igual ao id da tabela temp, e preencher o campo total.

Ao final do loop, fazer um select nessa tabela temp e devolver para a aplicação...

 

A grosso modo me parece essa a única solução ou alguém teria uma solução mais prática sem usar a tabela temporaria....

 

 

a query pra iniciar seria essa:

SELECT distinct(us.idUsuario), us.nome, us.equipe, eq.distrib
FROM (uefaNotasFiscais AS nf INNER JOIN uefaUsuarios AS us ON nf.idUsuario=us.idUsuario
	INNER JOIN uefaEquipes AS eq ON nf.idDistrib=eq.idEquipe)
WHERE (nf.status=2) AND (CONVERT(CHAR(10), nf.dataEmi, 102) >= @dataInicial) AND (CONVERT(CHAR(10), nf.dataEmi, 102) <= @dataFinal)

O status=2 significa que o movimento já foi conferido pela empresa e o usuário que efetuou o lançamento vai deve receber os pontos constante no campo pontos da tabela notafiscal como bônus.

 

Então seria isso o propósito, juntar todas as notas do mesmo usuário filtrando por uma data inicial e uma data final porém retornando uma só linha pra cada usuario, informando o nome, o nome do distribuidor que ele pertence e a quantidade de pontos do período.

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.