找到位于范围之间的所有ID,并且存在于常见的外键ID中



我想要具有共同其他ID的所有特定ID。我正在通过用户定义的表类型发送数据。

CREATE TYPE rangeType AS TABLE (
     ID2 int NOT NULL,
     StartRange int NULL,
     EndRange int NULL
);

表就像以下

ID1    ID2    Value
 11      2       3
 12      2       4
 12      3       8.9
 15      3       10
 15      2       4

我要发送的值将为表格

DECLARE @temp_table rangeType
Insert INTO @temp_table values (2,4,10)
INSERT INTO @temp_table values (3,5,10)

所以我希望输出是所有具有ID2值为2和3的ID1,并且具有ID2为2的行应具有4到10的值,并且所有具有ID2 AS 3的行都应具有5和10之间的值。

因此,在这种情况下,我的输出应为

ID1
12
15

作为ID1 1215映射23,并具有指定的各个范围之间的范围。

我在桌子上尝试了一个内连接,然后是BETWEEN操作员。这给我一个正确的值,即执行的操作是或操作,而不是我想要的操作。


您可以使用以下查询

    SELECT ID1 FROM TABLE
WHERE ID2 IN (2,3)
AND 
CASE WHEN ID2 = 2 AND VALUE >= 4 AND VALUE >=10 THEN 1
     WHEN ID2 = 3 AND VALUE >= 5 AND VALUE >=10 THEN 1
     ELSE 0 
END = 1;

最新更新