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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar