如何将表与条件和合并?SQL
我想把表1和表2合并成表3。我需要对表1中的行进行分组,以匹配表2的格式,同时对每个范围的c1、c2和c3求和 我对JOIN的理解很弱,非常感谢您的帮助 表1:如何将表与条件和合并?SQL,sql,Sql,我想把表1和表2合并成表3。我需要对表1中的行进行分组,以匹配表2的格式,同时对每个范围的c1、c2和c3求和 我对JOIN的理解很弱,非常感谢您的帮助 表1: ID begin end c1 c2 c3 78JUE 20 24 1 0 0 78JUE 24 28 2 1 0 78JUE 28 32 1 1 0 78JUE 32 36 0
ID begin end c1 c2 c3
78JUE 20 24 1 0 0
78JUE 24 28 2 1 0
78JUE 28 32 1 1 0
78JUE 32 36 0 0 0
78JUE 36 40 0 0 0
78JUE 40 44 4 1 1
78JUE 44 48 3 1 1
78JUE 48 52 1 2 0
78JUE 52 56 0 1 1
78JUE 56 60 2 0 1
78JUE 60 64 1 1 0
78JUE 64 68 0 2 1
表2:
ID begin end
78JUE 20 40
78JUE 40 52
78JUE 52 60
78JUE 60 68
表3:
ID begin end c1 c2 c3
78JUE 20 40 4 2 0
78JUE 40 52 8 4 2
78JUE 52 60 2 1 2
78JUE 60 68 1 3 1
您好,这应该可以:
SELECT
T1.ID
,T1.begin
,T1.end
,SELECT(SUM(T2.c1) FROM Table2 T2 WHERE T2.ID = T1.ID AND T2.begin >= T1.begin AND T2.end <= T1.end) c1
,SELECT(SUM(T2.c2) FROM Table2 T2 WHERE T2.ID = T1.ID AND T2.begin >= T1.begin AND T2.end <= T1.end) c2
,SELECT(SUM(T2.c3) FROM Table2 T2 WHERE T2.ID = T1.ID AND T2.begin >= T1.begin AND T2.end <= T1.end) c3
FROM Table1 T1
选择
T1.ID
,T1.开始
,T1.end
,选择(和(T2.c1)从表2中T2,其中T2.ID=T1.ID和T2.begin>=T1.begin和T2.end=T1.begin和T2.end=T1.begin和T2.end行51.85-55.77
?是否在40-52
范围内和52-60
范围内计数两次?我的假设是上限互斥的,这就是它们的含义应该是(一方面,对于更精确的值数据,很难使用包含上限-我们不知道精度限制)c1、c2和c3列中的值与开始-结束列无关。编辑-I将表中的开始-结束列四舍五入1@SC2018-呃,什么?这对我们来说是相当重要的信息。首先,我对这些类型查询的默认假设是,只应考虑下限起始值,但这样做会产生与您提供的示例结果不同的计算。