3表只有一个字段不相同,部分(前3个)字段的值完全相等,进行表连接形成新表
三表只有一个字段不相同,部分(前3个)字段的值完全相等,进行表连接形成新表。
一、原始数据
1、前提:部分A1 A2 A3字段的值完全相等。
2、表结构
表1结构:
A1 A2 A3 A4
22 33 44 55
表2结构:
A1 A2 A3 B4
66 77 88 99
22 33 44 88
99 28 36 17
表3结构:
A1 A2 A3 C4
66 77 88 23
22 33 44 81
55 99 51 37
二、期望值,连接出来的新表(D1为A4+B4+C4)
A1 A2 A3 A4 B4 C4 D1 F1
22 33 44 55 88 81 224 是
66 77 88 0 99 23 122 否
99 28 36 0 17 0 17 否
55 99 51 0 0 37 37 是
F1满意如下其中之一判定为“是”
A4(>0)+B4(>0)>=20
A4(>0)+C4(>0)>=20
B4(>0)+C4(>0)>=20
B4(>0)++B4(>0)>+C4(>0)>=20
其他为“否”
最好两步查询可以实现。
------解决方案--------------------
一、原始数据
1、前提:部分A1 A2 A3字段的值完全相等。
2、表结构
表1结构:
A1 A2 A3 A4
22 33 44 55
表2结构:
A1 A2 A3 B4
66 77 88 99
22 33 44 88
99 28 36 17
表3结构:
A1 A2 A3 C4
66 77 88 23
22 33 44 81
55 99 51 37
二、期望值,连接出来的新表(D1为A4+B4+C4)
A1 A2 A3 A4 B4 C4 D1 F1
22 33 44 55 88 81 224 是
66 77 88 0 99 23 122 否
99 28 36 0 17 0 17 否
55 99 51 0 0 37 37 是
F1满意如下其中之一判定为“是”
A4(>0)+B4(>0)>=20
A4(>0)+C4(>0)>=20
B4(>0)+C4(>0)>=20
B4(>0)++B4(>0)>+C4(>0)>=20
其他为“否”
最好两步查询可以实现。
------解决方案--------------------
if object_id('[TB1]') is not null drop table [TB1]
go
create table [TB1] (A1 int,A2 int,A3 int,A4 int)
insert into [TB1]
select 22,33,44,55
if object_id('[TB2]') is not null drop table [TB2]
go
create table [TB2] (A1 int,A2 int,A3 int,B4 int)
insert into [TB2]
select 66,77,88,99 union all
select 22,33,44,88 union all
select 99,28,36,17
if object_id('[TB3]') is not null drop table [TB3]
go
create table [TB3] (A1 int,A2 int,A3 int,C4 int)
insert into [TB3]
select 66,77,88,23 union all
select 22,33,44,81 union all
select 55,99,51,37
select * from [TB1]
select * from [TB2]
select * from [TB3]
;WITH TT
AS ( SELECT A1 ,
A2 ,
A3
FROM dbo.TB1
UNION
SELECT A1 ,
A2 ,