Tsql 组中的有效数据-SQL分组

Tsql 组中的有效数据-SQL分组,tsql,Tsql,请有人帮助我如何实现下面的场景 两个表一个称为驱动器,一个称为电子表 --驱动程序表 DECLARE @DRIVER TABLE ( Parenttype varchar (50), childtype varchar (50) ) INSERT @DRIVER SELECT 'Carbon Composite Resistor','Ceramic %' --电子桌 DECLARE @ELECTRONIC TABLE ( PARENTSKU varchar (50), ROLLOVER v

请有人帮助我如何实现下面的场景

两个表一个称为驱动器,一个称为电子表

--驱动程序表

DECLARE @DRIVER TABLE
(
Parenttype varchar (50),
childtype varchar (50)
)

INSERT @DRIVER

SELECT 'Carbon Composite Resistor','Ceramic %'
--电子桌

DECLARE @ELECTRONIC TABLE
(
PARENTSKU varchar (50),
ROLLOVER varchar (50),
CHILDSKU varchar (50),
TYPE varchar (50)
)

INSERT @ELECTRONIC

SELECT 'BIN19-1405','LEAD','19-1405','Carbon Composite Resistor' UNION ALL
SELECT 'SAM92-140','MERCURY','92-140','Carbon Composite Resistor' UNION ALL
SELECT 'SAB45-155','LEAD','45-155','Carbon Composite Resistor' UNION ALL
SELECT 'NIP69-153','SULPHUR','69-153','Carbon Composite Resistor' UNION ALL
SELECT 'DIP19-1508','LEAD','19-1508','Carbon Composite Resistor' UNION ALL
SELECT 'ZQC140012','ROHS','140012','Carbon Composite Resistor' UNION ALL
SELECT 'LHH543012','ROHS','543012','Carbon Composite Resistor' UNION ALL
SELECT 'JWC592013','ROHS','592013','Carbon Composite Resistor' UNION ALL
SELECT 'GHY846013','ROHS','846013','Carbon Composite Resistor' UNION ALL
SELECT 'ZQC140012','ROHS','140012','Ceramic capacitors LARGE' UNION ALL
SELECT 'LHH543012','ROHS','543012','Ceramic capacitors SMALL' UNION ALL
SELECT 'JWC592013','ROHS','592013','Ceramic capacitors MEDIUM' UNION ALL
SELECT 'GHY846013','ROHS','846013','Ceramic capacitors' UNION ALL
SELECT 'MCN8LTC8K','ROHS','8LTC8K','Double-layer capacitors' UNION ALL
SELECT 'PRM81150','ROHS','81150','Tantalum capacitors' UNION ALL
SELECT 'PRM846013','ROHS','846013','Hybrid capacitors '
在这里,我要寻找的输出满足以下两个条件

1st:所有包含与驱动程序表中可用的父类型相同的类型的父SKU,以及ROHS以外的翻滚

2ND:所有翻滚为ROHS的父SKU记录,但仅与父类型一起出现,而不与子类型一起出现

预期产量

╔════════════╦══════════╦══════════╦═══════════════════════════╗
║ PARENTSKU  ║ ROLLOVER ║ CHILDSKU ║           TYPE            ║
╠════════════╬══════════╬══════════╬═══════════════════════════╣
║ BIN19-1405 ║ LEAD     ║ 19-1405  ║ Carbon Composite Resistor ║
║ SAM92-140  ║ MERCURY  ║ 92-140   ║ Carbon Composite Resistor ║
║ SAB45-155  ║ LEAD     ║ 45-155   ║ Carbon Composite Resistor ║
║ NIP69-153  ║ SULPHUR  ║ 69-153   ║ Carbon Composite Resistor ║
║ DIP19-1508 ║ LEAD     ║ 19-1508  ║ Carbon Composite Resistor ║
║ MCN8LTC8K  ║ ROHS     ║ 8LTC8K   ║ Double-layer capacitors   ║
║ PRM81150   ║ ROHS     ║ 81150    ║ Tantalum capacitors       ║
║ PRM846013  ║ ROHS     ║ 846013   ║ Hybrid capacitors         ║
╚════════════╩══════════╩══════════╩═══════════════════════════╝
非常感谢。

试试这个

SELECT  E.PARENTSKU ,
        E.ROLLOVER ,
        E.CHILDSKU ,
        E.TYPE
FROM    @ELECTRONIC AS E
WHERE   ( E.Type IN ( SELECT    D.Parenttype
                      FROM      @DRIVER AS D )
          AND E.ROLLOVER != 'ROHS'
        )
        OR NOT EXISTS ( SELECT  NULL
                        FROM    @DRIVER AS D
                        WHERE   ( D.Parenttype = E.TYPE )
                                OR ( E.TYPE LIKE D.childtype ) )
输出


如果您展示您迄今为止所做的尝试,这将对其他人有所帮助。第一点似乎只是一个
WHERE ROLLOVER!='ROHS’
。第二点:不太清楚你在问什么。按照您当前的规则,我还将得到
“ZQC140012”,“ROHS”,“140012”,“陶瓷电容器大”
和其他一些第二点:当滚动=“ROHS”时,所有SKU都不存在父类型和子类型,这在驱动程序表中可用。