SQL Server - Dúvida ao usar Select e AND em 4 Colunas
08/08/2018
0
mes inicio | mes fim | ano inicio | ano fim
eu consiga puxar todas as colunas onde:
''ano fim'' seja a partir de 2018 com qualquer ''mes fim'' (registros vao até julho);
E
que ''ano inicio'' e ''mes inicio'' sejam qualquer mes/ano DESDE que nao 07 e 2018.
tentei:
SELECT * FROM Tabela
WHERE
ANOFIM >= ''2018''
AND
(MESINICIO < ''07'' AND ANOINICIO = ''2018'')
Mas não está certo, conseguem me ajudar?
Leonardo
Post mais votado
08/08/2018
SELECT * FROM Tabela WHERE ANOFIM >= '2018' AND (MESINICIO <> '07' AND ANOINICIO <> '2018')
Mas se não for, responda os questionamentos do Luciano que ficará mais fácil obter ajuda.
Emerson Nascimento
Mais Posts
08/08/2018
Luciano
Podes mostrar a estrutura da tabela? E o resultado do SELECT (após usar campo numérico). Além disso, quais registros existem na tabela atualmente, pra saber o que o SELECT vai retornar?
Aguardo respostas. E espero poder ajudar mais se precisar. (Se só mundando o tipo de campo já resolver, ótimo.)
08/08/2018
Alex Lekao
Particularmente, eu não consegui entender muito bem a necessidade.
o que o Emerson disse, eh basicamente o script que vc precisa.
Abraco.
08/08/2018
Leonardo
Oi. Primeiramente, você está usando que tipos para os campos MES e ANO (fime einício)?
Deveria usar numérico, pois comparação de strings é diferente em programação.
MESINICIO (T_MES(numeric(2,0)), NOT NULL)
MESFIM (T_MES(numeric(2,0)), NOT NULL)
ANOINICIO (T_ANO(numeric(4,0)), NOT NULL)
ANOFIM (T_ANO(numeric(4,0)), NOT NULL)
Podes mostrar a estrutura da tabela?
A pessoa que enviou a tabela, ao invés de usar um campo com mês/ano, o separou em dois! Então, ao invés de fazer simplesmente um between, not between ou algo do gênero, eu tenho que fazer o comparativo de 3 colunas.
ANO INICIO <= 2018 - OK
MES INICIO - QUALQUER MÊS DE QUALQUER ANO, EXCETO O MÊS 07 DO ANO INICIO 2018
ANO FIM - SOMENTE A PARTIR DE 2018
é basicamente essa lógica de comparação que preciso acertar.
E o resultado do SELECT (após usar campo numérico). Além disso, quais registros existem na tabela atualmente, pra saber o que o SELECT vai retornar?
08/08/2018
Leonardo
ANO INICIO <= 2018 - OK
MES INICIO - QUALQUER MÊS DE QUALQUER ANO, EXCETO O MÊS 07 DO ANO INICIO 2018
ANO FIM - SOMENTE A PARTIR DE 2018
é basicamente essa lógica de comparação que preciso acertar.
E o resultado do SELECT (após usar campo numérico). Além disso, quais registros existem na tabela atualmente, pra saber o que o SELECT vai retornar?
08/08/2018
Leonardo
<br />
Por exemplo: SELECIONAR * FROM tabelaEX<br />
WHERE<br />
col1 = ''exemplo'' <br />
AND<br />
ANOFIM>= ''2018''<br />
AND<br />
(IF ANO INICIO = ''2018'', filtrar MES_INICIO < ''7'') -> no caso, se na linha tiver a coluna ANO_INICIO preenchido com 2018, quero q ele analise a coluna MES_INICIO para filtrar todas as linhas onde existam ''7'' pra cima.<br />
Clique aqui para fazer login e interagir na Comunidade :)