Problemas com Where e Order By em dois campos diferentes?

27/09/2010

0

Pessoal, estou com um pequeno problema na clausula where e no order by de um select por causa de dois campos diferentes na tabela.

Bom a tabela esta assim

data1------------------data2
01/01/05--------------null
01/07/06--------------null
01/01/07-------------01/06/06
01/05/08-------------01/04/06
01/08/09-------------01/07/04

tenho no aplicativo duas situações no radiobutton

Se for a condição do radiobutton1 então faça o where da data1 <= a data que digitar no edit e ordenar pelo campo DATA1

Se for a condição do radiobutton2 então faça o where da data1 <= a data que digitar no edit e ordenar pelo campo DATA2


Ai que esta o meu problema... Existe um relatorio que verifica se a data2 esta vazia então mostra a data1

Mais fica dificil de eu conseguir ordernar e usar o where, pois o relatorio ja tratou estas condições, podendo aos olhos do usuarios ficar confuso a ordenação e a where também

Ai vendo esta possibilidade, achei uma solução para access

select
iif ([data2] is null, data1, data2)as data
from tabela
where data <= edit.text
order by 1

e no sql server usando um where

select case when
  data2 is null then
    data1
esle
    data2        
end as data
from tabela
where data <= edit.text
order by 1 

Obs: Não testei a sintaxe dos exemplos acima...

Porém, a empresa aonde trabalho não quer que seja utilizado desta forma ai, ou seja preciso que seja feito esta regra para que sirva para os dois bancos sem usar o recurso de nenhum dos bancos acima citados.


Adriano Dolce

Adriano Dolce

Responder

Posts

28/09/2010

Adriano Dolce

Tentei com Union All, mais não da certo   SELECT DT_SALARIO, MOTIVO, VL_SALARIO, NR_HORAS_SEMANAIS FROM funSalario WHERE cd_empresa = 00003 AND cd_funcionario = 2 AND DT_SALARIO IS NOT NULL UNION ALL SELECT DT_VALIDADE_SALARIO, MOTIVO, VL_SALARIO, NR_HORAS_SEMANAIS FROM funSalario WHERE cd_empresa = 00003 AND cd_funcionario = 2 AND DT_VALIDADE_SALARIO IS NOT NULL ORDER BY 1
Responder

28/09/2010

Wilson Junior

Teste assim:
SELECT
  DT_SALARIO AS Data,
  MOTIVO,
  VL_SALARIO,
  NR_HORAS_SEMANAIS
FROM
  funSalario
WHERE
  cd_empresa = 00003
  AND cd_funcionario = 2
  AND DT_VALIDADE_SALARIO IS NULL

UNION ALL

SELECT
  DT_VALIDADE_SALARIO AS Data,
  MOTIVO,
  VL_SALARIO,
  NR_HORAS_SEMANAIS
FROM
  funSalario
WHERE
  cd_empresa = 00003
  AND cd_funcionario = 2
  AND DT_VALIDADE_SALARIO IS NOT NULL

ORDER BY
  1


Espero ter colaborado.
Responder

28/09/2010

Adriano Dolce

Muito obrigado pela ajuda Wilson Lehapan Junior     Funcionou... Valeu amigo
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar