Array
(
)

Problemas com Where e Order By em dois campos diferentes?

Adriano_servitec
   - 27 set 2010

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_servitec
   - 28 set 2010

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

0
|
0

Wilson Paulista...!!!
   - 28 set 2010

Teste assim:
#Código

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.

0
|
0

Adriano_servitec
   - 28 set 2010

Muito obrigado pela ajuda

Wilson Lehapan Junior     Funcionou... Valeu amigo

0
|
0