我想将一个表的'from-to'值与另一个表的值进行比较,看看它们是否匹配。实际上,我希望第一个表的FROM适应另一个表的FROM和TO的其中一个第一个表的大小适合第二个表的TO之一,如下所示:
TABLE1 TABLE2
GEOLFROM GEOLTO SAMPFROM SAMPLTO
28.5 36 28.5 29.5
29.5 32
32 34.5
34.5 36.1
36.1 38
在那种情况下,我想要一条错误消息,因为与表1的geolto不匹配。
DECLARE @COUNT_ int
SELECT @COUNT_ = COUNT(*) FROM TABLE1 T1
LEFT JOIN TABLE2 T2 ON T1.HOLEID = T2.HOLEID AND (T1.GEOLFROM = T2.SAMPFROM OR T1.GEOLTO = T2.SAMPTO)
IF COUNT > 0
[...] ERROR
鉴于您有两个可以在任何2个不同行中显示的值,我相信您必须在同一张表上进行两次JOIN。所以我相信这对您有用:
CREATE TABLE #tbl_1(HoleID int, GEOLFROM decimal(10,1), GEOLTO decimal(10,1))
CREATE TABLE #tbl_2(HoleID int, SAMPFROM decimal(10,1), SAMPTO decimal(10,1))
INSERT INTO #tbl_1 VALUES(1,28.5,36)
INSERT INTO #tbl_2 VALUES(1,28.5,29.5)
INSERT INTO #tbl_2 VALUES(1,29.5,32)
INSERT INTO #tbl_2 VALUES(1,32,34.5)
INSERT INTO #tbl_2 VALUES(1,34.5,36.1)
INSERT INTO #tbl_2 VALUES(1,36.1,38)
SELECT COUNT(*)
from #tbl_1 t1
LEFT JOIN #tbl_2 t2 on t1.HoleID = t2.HoleID AND (t1.GEOLFROM = t2.SAMPFROM)
LEFT JOIN #tbl_2 t3 on t1.HoleID = t3.HoleID AND (t1.GEOLTO = t3.SAMPTO)
WHERE t3.HoleID IS NOT NULL and t2.HoleID IS NOT NULL