Как вернуть записи между двумя значениями в SQL - PullRequest
0 голосов
/ 19 октября 2018

друзья, я знаю, что мой вопрос очень простой, но я застрял в нем, поскольку я наивен в SQL, так что извиняюсь за это.У меня есть таблица с именем TRANS_MONT, и в ней хранятся данные, подобные приведенным ниже

Year    month   amount  
2017     10     500  
2017     11     700  
2017     12     400  
2018     1      600  
2018     2      450  
2018     3      600  

. Я заинтересован вернуть все те транзакции за 2017 год, для которых значение месяца больше 10, и все записи за 2018 год, для которых значение месяцаменьше 3 я пробовал ниже запрос, но он не работает

Select * from TRANS_MONT where year in (2017, 2018) and month between 10 and 3

Ответы [ 5 ]

0 голосов
/ 19 октября 2018

Вы не указали свою СУБД, но со стандартным SQL вы можете сделать следующее

select *
from trans_mont
where (year, month) between (2017,11) and (2018,2);

Оператор between включает в себя ребра, поэтому месяц в нижнем конце равен 11(не 10), а верхний месяц равен 2

Онлайн пример: https://rextester.com/VZPQ64850

0 голосов
/ 19 октября 2018

Самый простой будет что-то вроде этого:

select * from Trans_Mont 
where (year=2017 and Month>10)
or (year=2018 and Month<3)

или

select * from Trans_Mont 
where (year * 100 + Month) BETWEEN 201710 and 201803
0 голосов
/ 19 октября 2018

SQL не принимает модульную арифметику месяцев, если она хранится только как целое число.

Учитывая, что это действительно два логических оператора, отделите их от OR, чтобы захватить обе ситуации в обоихгода.Даже если бы месячный диапазон должен был работать, технически он мог бы также забрать 12-й месяц в 2018 году, например.

SELECT * FROM TRANS_MONT
WHERE (Year = 2017 AND month > 10) OR (Year = 2018 AND month < 3)
0 голосов
/ 19 октября 2018

Это довольно просто:

SELECT *
FROM   trans_mont
WHERE  (year = 2017 AND month > 10)
   OR  (year = 2018 AND month < 3);
0 голосов
/ 19 октября 2018

Попробуйте ниже

Select * from TRANS_MONT where (year=2017 and month>=10) OR (year=2018 and month<=3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...