一个表中的时间间隔与另一个表中的时间间隔不匹配

问题描述 投票:0回答:1

我想将一个表的'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
sql-server tsql intervals
1个回答
1
投票

鉴于您有两个可以在任何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
© www.soinside.com 2019 - 2024. All rights reserved.