我有兩個表X和Y的最佳匹配邏輯:如何實現在TSQL(SQL Server 2000中)
表X
C1 C2 C3
1 A 13
2 B 16
3 C 8
數據表Y
C1 C2 C3 C4
1 A 2 N
2 A 8 N
3 A 12 N
4 A 5 N
5 B 7 N
6 B 16 N
7 B 9 N
8 B 5 N
9 C 8 N
10 C 2 N
11 C 8 N
12 C 6 N
表Y中的記錄可以是n個號碼
CREATE TABLE X(C1 INT, C2 CHAR(1), C3 INT);
CREATE TABLE Y(C1 INT, C2 CHAR(1), C3 INT, C4 CHAR(1));
具有以下數據:
INSERT INTO X VALUES (1 'A',13);
INSERT INTO X VALUES (2 'B',16);
INSERT INTO X VALUES (3 'C',8);
INSERT INTO Y VALUES (1,'A', 2,'N');
INSERT INTO Y VALUES (2,'A', 8,'N');
INSERT INTO Y VALUES (3,'A', 12,'N');
INSERT INTO Y VALUES (4,'A', 5,'N');
INSERT INTO Y VALUES (5,'B', 7,'N');
INSERT INTO Y VALUES (6,'B', 16,'N');
INSERT INTO Y VALUES (7,'B', 9,'N');
INSERT INTO Y VALUES (8,'B', 5,'N');
INSERT INTO Y VALUES (9,'C', 8,'N');
INSERT INTO Y VALUES (10,'C', 2,'N');
INSERT INTO Y VALUES (11,'C', 8,'N');
INSERT INTO Y VALUES (12,'C', 6,'N');
預期的結果
數據表Y
C1 C2 C3 C4
1 A 2 N
2 A 8 Y
3 A 12 N
4 A 5 Y
5 B 7 N
6 B 16 Y
7 B 9 N
8 B 5 N
9 C 8 Y
10 C 2 N
11 C 8 N
12 C 6 N
如何比較列C3的值表X與一個將表Y的列C3的可能匹配和在表Y的列C4中將記錄標記爲匹配和不匹配?
可能一個(即,在表X中的列C2的值)匹配將是(其中,R是在數據表Y柱C1的行數,即值):
R1,
R2,
R3,
R4,
R1+R2,
R1+R3,
R1+R4,
R2+R3,
R2+R4,
R3+R4,
R4+R5,
R1+R2+R3,
R1+R2+R4,
R2+R3+R4,
R1+R2+R3+R4
對不起,但爲什麼第四個記錄有Y?也許我並不是不喜歡,但5號不在表A – Claudia 2010-04-30 19:36:03
@Claudia:帶了我一段時間,但我認爲他在尋找完全匹配,以及如果在表X中找到表Y中多行的總和。在表中Y行2和4加起來爲13,存在於表X中。 – BenV 2010-05-01 01:00:55
我也沒有真正得到任務; R1 + R2是什麼意思? – IMHO 2010-05-03 15:46:47