Sql XZZ使子行组相交
我必须根据现有数据对记录进行“建议”分组 表A的复合键为Akey+Bkey。表B的主键为Bkey Akey是从SQL 2012序列对象生成的,Bkey上的表a和表B之间存在一对多关系 结构和样本数据如下所示 表A 表B 查询必须在表A中插入新的组,这些组与表B中哈希值匹配的现有BKEY集相匹配。为了描述点,我使用了一个汽车模型的示例。汽车模型中项目的散列值可能完全匹配,但可能不匹配。因此,如果GroupValue中的所有项都存在,那么我想在表a中插入一组新的记录,其中的值与该组中找到的值完全匹配。Sql XZZ使子行组相交,sql,sql-server,Sql,Sql Server,我必须根据现有数据对记录进行“建议”分组 表A的复合键为Akey+Bkey。表B的主键为Bkey Akey是从SQL 2012序列对象生成的,Bkey上的表a和表B之间存在一对多关系 结构和样本数据如下所示 表A 表B 查询必须在表A中插入新的组,这些组与表B中哈希值匹配的现有BKEY集相匹配。为了描述点,我使用了一个汽车模型的示例。汽车模型中项目的散列值可能完全匹配,但可能不匹配。因此,如果GroupValue中的所有项都存在,那么我想在表a中插入一组新的记录,其中的值与该组中找到的值完全匹配
在示例数据中,您可以看到AKey 3具有Bkey 2和3,Bkey 6和7是匹配项,因此这两条记录将插入表a中,并为AKey生成一个新序列。我不确定我是否理解关于组和组值字段的部分 据我所知,您想在表A中插入表B中与每个AKey的Bkey的HashString匹配的任何行,而这些行在表A中并不存在 如果我理解正确:对于Akey1,表B.Bkey 7行应该添加到表A中。对吗 如果逻辑良好,那么下面的查询应该选择这些行
SELECT
a.Akey, a.Bkey, b3.*
FROM b
INNER JOIN a ON a.Bkey=b.Bkey
INNER JOIN b b2 ON b2.HashString=b.HashString and b2.Bkey=a.Bkey
INNER JOIN b b3 ON b3.HashString=b2.HashString AND b3.Bkey <> b.Bkey
WHERE a.Akey=3 --Comment this line for the full matches
xzz是怎么回事?
Bkey GroupValue Data HashString
---- --------------- -------------- ----------
1 Ford Festiva AIR BAG HASH1
2 Ford Festiva RADIATOR CAP HASH2
3 Ford Festiva FUEL PUMP HASH3
4 Ford Mustang AIR FILTER HASH4
5 Ford Explorer AIR FILTER HASH5
6 Ford Edge RADIATOR CAP HASH2
7 Ford Edge FUEL PUMP HASH3
SELECT
a.Akey, a.Bkey, b3.*
FROM b
INNER JOIN a ON a.Bkey=b.Bkey
INNER JOIN b b2 ON b2.HashString=b.HashString and b2.Bkey=a.Bkey
INNER JOIN b b3 ON b3.HashString=b2.HashString AND b3.Bkey <> b.Bkey
WHERE a.Akey=3 --Comment this line for the full matches