Problemas com Where e Order By em dois campos diferentes?
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.
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
Curtidas 0
Respostas
Adriano Dolce
27/09/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
GOSTEI 0
Wilson Junior
27/09/2010
Teste assim:
Espero ter colaborado.
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.
GOSTEI 0
Adriano Dolce
27/09/2010
Muito obrigado pela ajuda
Wilson Lehapan Junior
Funcionou... Valeu amigo
GOSTEI 0