Сравните, если 2 входных числа находятся в диапазоне 2 столбцов - PullRequest
0 голосов
/ 21 ноября 2019

У меня есть таблица ff.

Серия

startno | endno
1       | 99

и 2 входа

DECLARE @inputstart int = 2, @inputend int = 100

Я хочу выбрать, где мои 2входные данные находятся в диапазоне значений, указанных в таблице.

Ответы [ 3 ]

1 голос
/ 21 ноября 2019

Попробуйте это.

SELECT * 
FROM Your_Table 
WHERE (StartNo BETWEEN @inputstart AND @inputend) OR (endno BETWEEN @inputstart AND @inputend)

Если вы хотите, в каком столбце находится между вашими входами, попробуйте.

SELECT MAX(CASE WHEN StartNo BETWEEN @inputstart AND @inputend THEN StartNo 
                WHEN endno BETWEEN @inputstart AND @inputend THEN endno END)
FROM Your_Table 
0 голосов
/ 21 ноября 2019

Предположим, мы создали временную таблицу

CREATE TABLE #DeleteMe(startNo INT , endNo INT )

, затем вставляем все записи в временную таблицу. Например, от 1 до 100

;WITH nums AS
   (SELECT 1 AS startNo,1 AS endNo  
    UNION ALL
    SELECT startNo + 1 AS startNo,endNo + 1 AS endNo
    FROM nums
    WHERE nums.startNo <= 99)

INSERT INTO #DeleteMe
SELECT *
FROM nums  

/ * Вот начальная основная часть, которую вы хотите .... * /

DECLARE @inputstart as  int ,@inputend AS INT
SET @inputstart= 2 
SET  @inputend = 50

SELECT * FROM #DeleteMe WHERE 
convert(INT,startNo)   BETWEEN Convert(INT,CASE WHEN isnull(@inputstart,'')='' THEN startNo ELSE isnull(@inputstart,'') END)                     
AND Convert(INT, CASE WHEN isnull(@inputend,'')='' THEN endNo ELSE isnull(@inputend,'') END)
0 голосов
/ 21 ноября 2019

попробуйте

declare @inputstart int = 2, @inputend int = 100;

with cte as (
select 1 as startno, 99 as endno
) select * from cte where @inputstart between startno and endno
    and @inputend between startno and endno
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...