SELECT com condição que retorne mais de um resultado
05/03/2013
0
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
Post mais votado
06/03/2013
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))
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?
Jair N.
Mais Posts
06/03/2013
Eliézio Mesquita
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,
06/03/2013
Deivison Melo
06/03/2013
Moises Neto
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))
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?
31/07/2013
José
Clique aqui para fazer login e interagir na Comunidade :)