SELECT com condição que retorne mais de um resultado
Olá Boa noite a todos. este e o meu primeiro tópico no DevMedia e peço desculpas caso haja algo errado
Estou com problema em realizar uma consulta que usa uma variável enviada pelo BI para retornar mais de um resultado. Quando o filtro1 é igual a gerente a consulta me trás todos os usuários. Quando o filtro1 é igual a supervisor ela deve me trazer apenas os usuários que possuam o 'codsupervisor' igual ao valor do filtro2.
segue um exemplo da query
essa consulta da erro de "too many values" porque a clausula aceita apenas um único valor.
Alguém ai pode me ajudar?
Estou com problema em realizar uma consulta que usa uma variável enviada pelo BI para retornar mais de um resultado. Quando o filtro1 é igual a gerente a consulta me trás todos os usuários. Quando o filtro1 é igual a supervisor ela deve me trazer apenas os usuários que possuam o 'codsupervisor' igual ao valor do filtro2.
segue um exemplo da query
select case when '#tfiltro#' ='GERENTE' then (select nome,codusurario,faturamento,codsupervisor from usuario) when '#tfiltro#' = 'Supervisor' then (select nome,codusurario,faturamento from usuario where codsupervisor = '#tfiltro2#')end
essa consulta da erro de "too many values" porque a clausula
CASE
Alguém ai pode me ajudar?
Moises Neto
Curtidas 0
Melhor post
Jair N.
06/03/2013
O "CASE" que você está utilizando está criando um ARRAY de registros "nome,codusuario, faturamento, codsupervisor"
de linhas e colunas o case na clausula WHERE em algumas linguagens pode ser utilizado.
Para o seu caso não vejo a real necessidade:
1º são os mesmos campos na mesma tabela;
2º o cursor para estes registros não precisa ser de um array;
3º o que é simples não precisa complicar...
SELECT usuario.nome
, usuario.codusuario
, usuario.fautramento
, usuario.codsupervisor
FROM usuario
WHERE ('#tFiltro#' = 'GERENTE')
OR (('#tFiltro#' = 'Supervisor')
AND ('#tFiltro2#' = usuario.codsupervisor))
de linhas e colunas o case na clausula WHERE em algumas linguagens pode ser utilizado.
Para o seu caso não vejo a real necessidade:
1º são os mesmos campos na mesma tabela;
2º o cursor para estes registros não precisa ser de um array;
3º o que é simples não precisa complicar...
SELECT usuario.nome
, usuario.codusuario
, usuario.fautramento
, usuario.codsupervisor
FROM usuario
WHERE ('#tFiltro#' = 'GERENTE')
OR (('#tFiltro#' = 'Supervisor')
AND ('#tFiltro2#' = usuario.codsupervisor))
Olá Boa noite a todos. este e o meu primeiro tópico no DevMedia e peço desculpas caso haja algo errado
Estou com problema em realizar uma consulta que usa uma variável enviada pelo BI para retornar mais de um resultado. Quando o filtro1 é igual a gerente a consulta me trás todos os usuários. Quando o filtro1 é igual a supervisor ela deve me trazer apenas os usuários que possuam o 'codsupervisor' igual ao valor do filtro2.
segue um exemplo da query
essa consulta da erro de "too many values" porque a clausula aceita apenas um único valor.
Alguém ai pode me ajudar?
Estou com problema em realizar uma consulta que usa uma variável enviada pelo BI para retornar mais de um resultado. Quando o filtro1 é igual a gerente a consulta me trás todos os usuários. Quando o filtro1 é igual a supervisor ela deve me trazer apenas os usuários que possuam o 'codsupervisor' igual ao valor do filtro2.
segue um exemplo da query
select case when '#tfiltro#' ='GERENTE' then (select nome,codusurario,faturamento,codsupervisor from usuario) when '#tfiltro#' = 'Supervisor' then (select nome,codusurario,faturamento from usuario where codsupervisor = '#tfiltro2#')end
essa consulta da erro de "too many values" porque a clausula
CASE
Alguém ai pode me ajudar?
GOSTEI 1
Mais Respostas
Eliézio Mesquita
05/03/2013
Olá Moisés
No CASE casa When vai alterar o valor que vai aparecer na sua coluna, ai estou mostrando um exemplo que vai trazer o resultando de acordo com o filtro (JOB_ID ou MANAGER_ID) precisa saber exatamente o resultado desejado para poder montar o melhor script.
att,
No CASE casa When vai alterar o valor que vai aparecer na sua coluna, ai estou mostrando um exemplo que vai trazer o resultando de acordo com o filtro (JOB_ID ou MANAGER_ID) precisa saber exatamente o resultado desejado para poder montar o melhor script.
SELECT CASE WHEN job_id = 'IT_PROG' THEN Last_name WHEN manager_id = 100 THEN last_name ELSE last_name END FROM employees
att,
GOSTEI 0
Deivison Melo
05/03/2013
Recomendo o uso do decode (mesma coisa do case, só que é bem mais simples e enxuto de se usar!!!!)
GOSTEI 0
Moises Neto
05/03/2013
Caro Jair Aqui funcionou corretamente. Muito obrigado pela ajuda!!
O "CASE" que você está utilizando está criando um ARRAY de registros "nome,codusuario, faturamento, codsupervisor"
de linhas e colunas o case na clausula WHERE em algumas linguagens pode ser utilizado.
Para o seu caso não vejo a real necessidade:
1º são os mesmos campos na mesma tabela;
2º o cursor para estes registros não precisa ser de um array;
3º o que é simples não precisa complicar...
SELECT usuario.nome
, usuario.codusuario
, usuario.fautramento
, usuario.codsupervisor
FROM usuario
WHERE ('#tFiltro#' = 'GERENTE')
OR (('#tFiltro#' = 'Supervisor')
AND ('#tFiltro2#' = usuario.codsupervisor))
de linhas e colunas o case na clausula WHERE em algumas linguagens pode ser utilizado.
Para o seu caso não vejo a real necessidade:
1º são os mesmos campos na mesma tabela;
2º o cursor para estes registros não precisa ser de um array;
3º o que é simples não precisa complicar...
SELECT usuario.nome
, usuario.codusuario
, usuario.fautramento
, usuario.codsupervisor
FROM usuario
WHERE ('#tFiltro#' = 'GERENTE')
OR (('#tFiltro#' = 'Supervisor')
AND ('#tFiltro2#' = usuario.codsupervisor))
Olá Boa noite a todos. este e o meu primeiro tópico no DevMedia e peço desculpas caso haja algo errado
Estou com problema em realizar uma consulta que usa uma variável enviada pelo BI para retornar mais de um resultado. Quando o filtro1 é igual a gerente a consulta me trás todos os usuários. Quando o filtro1 é igual a supervisor ela deve me trazer apenas os usuários que possuam o 'codsupervisor' igual ao valor do filtro2.
segue um exemplo da query
essa consulta da erro de "too many values" porque a clausula aceita apenas um único valor.
Alguém ai pode me ajudar?
Estou com problema em realizar uma consulta que usa uma variável enviada pelo BI para retornar mais de um resultado. Quando o filtro1 é igual a gerente a consulta me trás todos os usuários. Quando o filtro1 é igual a supervisor ela deve me trazer apenas os usuários que possuam o 'codsupervisor' igual ao valor do filtro2.
segue um exemplo da query
select case when '#tfiltro#' ='GERENTE' then (select nome,codusurario,faturamento,codsupervisor from usuario) when '#tfiltro#' = 'Supervisor' then (select nome,codusurario,faturamento from usuario where codsupervisor = '#tfiltro2#')end
essa consulta da erro de "too many values" porque a clausula
CASE
Alguém ai pode me ajudar?
GOSTEI 0
José
05/03/2013
Obrigado pelo retorno amigo, e já que duvida foi solucionada estou dando este tópico por concluído.
GOSTEI 0