Между двумя различными номерами диапазона - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть хранимая процедура, в которой есть таблица для параметра с двумя столбцами: From и To. Оба инт. Он используется для поиска результатов. Пример таблицы:

+-----------+-------+----+
| RowNumber | From  | To |
+-----------+-------+----+
|         1 |     0 | 30 |
|         2 |    60 | 80 |
+-----------+-------+----+

Как мне выполнить поиск в таблице, чтобы получить результаты, включающие все оценки от 0 до 30, от 60 до 80?

Я пытался between в цикле while, но ничего.

Ответы [ 3 ]

0 голосов
/ 24 апреля 2018

Это предположение при отсутствии ответа, однако, возможно ...

CREATE TABLE Score (ID int IDENTITY(1,1),
                    Score int);

INSERT INTO Score
VALUES (65),(17),(97),(14),(34),(79),(37),(87),(65),(63),(15),(75),(05),(25),(38),(28),(88);
GO

CREATE TABLE ScoreRange (ID int IDENTITY(1,1),
                         [From] int, --Try to avoid keywords, and especially reserved words, for column names
                         [To] int); --Try to avoid keywords, and especially reserved words, for column names
INSERT INTO ScoreRange
VALUES (0,30),
       (60,80);
GO
SELECT *
FROM Score S;

SELECT S.*
FROM Score S
     JOIN ScoreRange SR ON S.Score BETWEEN SR.[From] AND SR.[To];
GO

DROP TABLE Score;
DROP TABLE ScoreRange;
0 голосов
/ 24 апреля 2018
select * from t
where exists (
    select 1 from ranges r
    where t.val between r.from and r.to
);
0 голосов
/ 24 апреля 2018

Трудно ответить без выборочных данных - но я думаю, что вы ищете что-то вроде этого:

SELECT t.*
FROM YourTable As t
JOIN @TVP As p ON t.Score >= p.[From] AND t.Score <= p.[To]
...