查找位于Range之间的所有ID,它们存在于公共外键id中

时间:2017-04-27 10:40:18

标签: sql sql-server

我想要所有具有共同其他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)

所以我希望Output是所有那些ID2都是2和3的ID1,而ID2为2的行应该有4到10之间的值,所有那些有ID2的行因为3的值应该在5到10之间。

所以我的输出,在这种情况下,应该是

ID1
12
15

ID1 1215同时映射23,并且具有指定的相应范围之间的范围。

我尝试了桌面上的内部联接,然后是BETWEEN运算符。这给了我一个正确的值,执行的操作是OR操作而不是我想要的AND操作。

1 个答案:

答案 0 :(得分:0)


您可以使用以下查询

    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;