jotafe Postado Março 26, 2012 Denunciar Share Postado Março 26, 2012 Caros,Tenho a seguinte situação, uma lista de funcionários, projetos e status.Eu preciso de uma query que me retorne o nome do Funcionário, somente quando todos os status de seus projetos forem 100%Ex.:Func Projeto StatusJoão Projeto 1 100,00%João Projeto 2 50,00%João Projeto 3 50,00%João Projeto 4 100,00%Maria Projeto 5 100,00%Maria Projeto 6 100,00%Maria Projeto 7 100,00%Maria Projeto 8 100,00%José Projeto 9 50,00%José Projeto 10 50,00%José Projeto 11 50,00%José Projeto 12 50,00%No caso acima, a query so retornaria somente o nome da Maria.Se precisarem de mais informações me digam.Obrigado desde já.João Fábio Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Março 27, 2012 Denunciar Share Postado Março 27, 2012 Bom dia João Fábio, Para fazer isto, terá que pegar todas as ocorrências e verificar se elas estão todas com 100%. Terá que utilizar uma forma de comparação, para retornar o valor desejado. Fiz um exemplo logo abaixo e espero que ajude:-- criação de temporária CREATE table #tabela (Func varchar(10), Projeto varchar(20), STATUS INT) -- inserção dos dados INSERT INTO #tabela VALUES ('João','Projeto 1', 100) INSERT INTO #tabela VALUES ('João','Projeto 2', 50) INSERT INTO #tabela VALUES ('João','Projeto 3', 50) INSERT INTO #tabela VALUES ('João','Projeto 4', 100) INSERT INTO #tabela VALUES ('Maria','Projeto 5', 100) INSERT INTO #tabela VALUES ('Maria','Projeto 6', 100) INSERT INTO #tabela VALUES ('Maria','Projeto 7', 100) INSERT INTO #tabela VALUES ('Maria','Projeto 8', 100) INSERT INTO #tabela VALUES ('José','Projeto 9', 50) INSERT INTO #tabela VALUES ('José','Projeto 10', 50) INSERT INTO #tabela VALUES ('José','Projeto 11', 50) INSERT INTO #tabela VALUES ('José','Projeto 12', 50) -- verificação SELECT * FROM #tabela -- select com resultado desejado SELECT Func FROM #tabela GROUP BY Func HAVING SUM(STATUS)=count(STATUS)*100 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jotafe Postado Março 28, 2012 Autor Denunciar Share Postado Março 28, 2012 Fulvio,Vou testar aqui.Obrigado desde já. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jotafe Postado Abril 3, 2012 Autor Denunciar Share Postado Abril 3, 2012 (editado) Bom dia João Fábio, Para fazer isto, terá que pegar todas as ocorrências e verificar se elas estão todas com 100%. Terá que utilizar uma forma de comparação, para retornar o valor desejado. Fiz um exemplo logo abaixo e espero que ajude:-- criação de temporária CREATE table #tabela (Func varchar(10), Projeto varchar(20), STATUS INT) -- inserção dos dados INSERT INTO #tabela VALUES ('João','Projeto 1', 100) INSERT INTO #tabela VALUES ('João','Projeto 2', 50) INSERT INTO #tabela VALUES ('João','Projeto 3', 50) INSERT INTO #tabela VALUES ('João','Projeto 4', 100) INSERT INTO #tabela VALUES ('Maria','Projeto 5', 100) INSERT INTO #tabela VALUES ('Maria','Projeto 6', 100) INSERT INTO #tabela VALUES ('Maria','Projeto 7', 100) INSERT INTO #tabela VALUES ('Maria','Projeto 8', 100) INSERT INTO #tabela VALUES ('José','Projeto 9', 50) INSERT INTO #tabela VALUES ('José','Projeto 10', 50) INSERT INTO #tabela VALUES ('José','Projeto 11', 50) INSERT INTO #tabela VALUES ('José','Projeto 12', 50) -- verificação SELECT * FROM #tabela -- select com resultado desejado SELECT Func FROM #tabela GROUP BY Func HAVING SUM(STATUS)=count(STATUS)*100Agora tenho outro problema seguindo na mesma linha, só que em vez do nome um ID Numerico (INT) e no Status um campo VarcharExemplo:OS >> Complementar >> Status_Complemetar 101 >> 201 >> Fechada101 >> 202 >> Aberta101 >> 203 >> Aberta102 >> 204 >> Fechada102 >> 205 >> Fechada102 >> 206 >> Fechada102 >> 207 >> Fechada102 >> 208 >> Fechada103 >> 209 >> Fechada103 >> 210 >> Aberta103 >> 211 >> Aberta103 >> 212 >> Em atendimentoPreciso que retorne somente as OS com todos Status_Complemetar "Fechado"É possível? Editado Abril 3, 2012 por jotafe Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Abril 4, 2012 Denunciar Share Postado Abril 4, 2012 rs... essa aí é mais complexa... mas vamos lá:-- criação de temporária CREATE table #tabela (OS int, Complementar INT, Status_Complemetar VARCHAR(10)) -- inserção dos dados INSERT INTO #tabela VALUES (101 , 201 , 'Fechada') INSERT INTO #tabela VALUES (101 , 202 , 'Aberta') INSERT INTO #tabela VALUES (101 , 203 , 'Aberta') INSERT INTO #tabela VALUES (102 , 204 , 'Fechada') INSERT INTO #tabela VALUES (102 , 205 , 'Fechada') INSERT INTO #tabela VALUES (102 , 206 , 'Fechada') INSERT INTO #tabela VALUES (102 , 207 , 'Fechada') INSERT INTO #tabela VALUES (102 , 208 , 'Fechada') INSERT INTO #tabela VALUES (103 , 209 , 'Fechada') INSERT INTO #tabela VALUES (103 , 210 , 'Aberta') INSERT INTO #tabela VALUES (103 , 211 , 'Aberta') INSERT INTO #tabela VALUES (103 , 212 , 'Em atendimento') -- verificação SELECT * FROM #tabela -- select com resultado desejado SELECT OS FROM #tabela GROUP BY OS HAVING sum(CASE Status_Complemetar WHEN 'Fechada' THEN 1 ELSE 0 END)=COUNT(os) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tecmart Postado Abril 11, 2012 Denunciar Share Postado Abril 11, 2012 Caros, boa tarde!Estou com o mesmo caso do João Fábio.Exemplo:OS, Status101, Fechado101, Aberto101, Fechado102, Aberto102, Fechado103, Fechado103, Fechado104, Aberto104, AbertoPS. OS INT, Status VARCHARPreciso que retorne somente 1 vez o 103 porque todos os 103 tem status fechado os outros não, porque tem pelo menos um aberto.Desde já agradeço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Abril 12, 2012 Denunciar Share Postado Abril 12, 2012 Bom dia tecmart, A minha resposta do dia 04/04/2012 - 17:33, contempla a sua dúvida.... :) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tecmart Postado Abril 12, 2012 Denunciar Share Postado Abril 12, 2012 Fulvio, bom dia!Eu fiz, só que consultando uma view. A query executa, mas não traz nenhum resultado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Abril 12, 2012 Denunciar Share Postado Abril 12, 2012 Mas possui alguma OS que se encontra com todos os Status="Fechado"? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tecmart Postado Abril 12, 2012 Denunciar Share Postado Abril 12, 2012 Fulvio, já descobri o que é, estava trazendo outro campo junto e acabava trazendo vazio. Funcionou!Muito obrigado pelo apoio :D Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Abril 12, 2012 Denunciar Share Postado Abril 12, 2012 :) De nada. Precisando estamos ai. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
jotafe
Caros,
Tenho a seguinte situação, uma lista de funcionários, projetos e status.
Eu preciso de uma query que me retorne o nome do Funcionário, somente quando todos os status de seus projetos forem 100%
Ex.:
Func Projeto Status
João Projeto 1 100,00%
João Projeto 2 50,00%
João Projeto 3 50,00%
João Projeto 4 100,00%
Maria Projeto 5 100,00%
Maria Projeto 6 100,00%
Maria Projeto 7 100,00%
Maria Projeto 8 100,00%
José Projeto 9 50,00%
José Projeto 10 50,00%
José Projeto 11 50,00%
José Projeto 12 50,00%
No caso acima, a query so retornaria somente o nome da Maria.
Se precisarem de mais informações me digam.
Obrigado desde já.
João Fábio
Link para o comentário
Compartilhar em outros sites
10 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.