안녕하세요 모두 제가 숫자가 SQL 테이블에 속하는 범위를 결정하기 위해 쿼리를 만들어야합니다. 내가하고있는 일은 사이를 사용하지만 값을 사용할 때입니다. 최종 값이 null 인 최종 범위에 적용되는 결과는 가져 오지 않지만 해결 방법을 찾았지만이 방법이 최선의 방법은 아니라고 생각합니다. 아래는 내가하려는 일의 예입니다.범위 테이블 내에서 숫자 위치를 식별하는 SQL 쿼리
-- Creando temporal
CREATE TABLE #TMP
(
RangeID INT
,InitialValue INT NULL
,FinalValue INT NULL
)
-- Insertar valores
INSERT INTO #TMP
( RangeID, InitialValue, FinalValue )
VALUES
( 1, 100, 200)
,( 2, 201, 300)
,( 3, 301, NULL)
-- Verificando temporal
SELECT * FROM #TMP
-- Verificando los rangos
SELECT
*
FROM
#TMP
WHERE
301 between InitialValue
AND FinalValue
--RETURNS NOTHING
SELECT
*
FROM
#TMP
WHERE
301 between InitialValue
AND isnull(FinalValue,301+1)
--RETURNS THE DESIRED RESULT
-- Borrando temporal
DROP TABLE #TMP
문제는 최종 값이 null 일 때 isnull을 사용하여 유효성을 검사하고 값을 할당해야한다는 것입니다.
이 문제에 접근하는 다른 방법이 있습니까? 옵션
사용중인 특정 DBMS에 질문을 태그하십시오. – Barmar
SQL Server 2008 R2를 사용하고 있습니다. –
입력 값이 400 인 경우 원하는 결과가 있습니까? – Barmar