Sql XZZ使子行组相交

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中插入一组新的记录,其中的值与该组中找到的值完全匹配

我必须根据现有数据对记录进行“建议”分组

表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