jotafe Posted March 26, 2012 Report Share Posted March 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 Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted March 27, 2012 Report Share Posted March 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 Quote Link to comment Share on other sites More sharing options...
0 jotafe Posted March 28, 2012 Author Report Share Posted March 28, 2012 Fulvio,Vou testar aqui.Obrigado desde já. Quote Link to comment Share on other sites More sharing options...
0 jotafe Posted April 3, 2012 Author Report Share Posted April 3, 2012 (edited) 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? Edited April 3, 2012 by jotafe Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted April 4, 2012 Report Share Posted April 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) Quote Link to comment Share on other sites More sharing options...
0 tecmart Posted April 11, 2012 Report Share Posted April 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. Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted April 12, 2012 Report Share Posted April 12, 2012 Bom dia tecmart, A minha resposta do dia 04/04/2012 - 17:33, contempla a sua dúvida.... :) Quote Link to comment Share on other sites More sharing options...
0 tecmart Posted April 12, 2012 Report Share Posted April 12, 2012 Fulvio, bom dia!Eu fiz, só que consultando uma view. A query executa, mas não traz nenhum resultado. Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted April 12, 2012 Report Share Posted April 12, 2012 Mas possui alguma OS que se encontra com todos os Status="Fechado"? Quote Link to comment Share on other sites More sharing options...
0 tecmart Posted April 12, 2012 Report Share Posted April 12, 2012 Fulvio, já descobri o que é, estava trazendo outro campo junto e acabava trazendo vazio. Funcionou!Muito obrigado pelo apoio :D Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted April 12, 2012 Report Share Posted April 12, 2012 :) De nada. Precisando estamos ai. Quote Link to comment Share on other sites More sharing options...
Question
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 to comment
Share on other sites
10 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.