Sql server 2012 基于多行中的值选择行

Sql server 2012 基于多行中的值选择行,sql-server-2012,Sql Server 2012,我有一个这样的sql表 Id Idea Trigger 1 CoreOne Trig1 2 CoreOne Trig2 3 CorePlus Trig3 4 CorePlus Trig1 5 CorePP Trig4 基本上,每个想法都有一个触发点。每个想法可以有多个触发器,每个触发器可以用来触发多个想法。但是,所有的触发因素都必须存在,想法才能启动 从另一张桌子上,我得到了这个 Id ArmNum Trigger

我有一个这样的sql表

Id  Idea        Trigger
1   CoreOne     Trig1
2   CoreOne     Trig2
3   CorePlus    Trig3
4   CorePlus    Trig1
5   CorePP      Trig4
基本上,每个想法都有一个触发点。每个想法可以有多个触发器,每个触发器可以用来触发多个想法。但是,所有的触发因素都必须存在,想法才能启动

从另一张桌子上,我得到了这个

Id  ArmNum  Trigger
1   123 Trig1
2   123 Trig2
每只手臂产生触发器。现在我需要匹配这两个表,并且能够告诉大家,对于ARM123,Idea,CoreOne可以启动,因为两个触发器都存在。但CorePlus不能这样做,因为它需要Trig3

任何想法。我对这件事似乎完全不知所措


谢谢

我对您的数据了解不多,而且您的示例数据似乎没有说明各种场景,但是下面的内容可以使用,或者是一个很好的起点

GO
DECLARE @t1 TABLE (Id int, Idea varchar(100), [Trigger] varchar(100))
DECLARE @t2 TABLE (Id int, ArmNum int, [Trigger] varchar(100))
DECLARE @t4 TABLE (Id int, Idea varchar(100), ArmNum int, [Trigger] varchar(100))
INSERT INTO @t1 VALUES (1,'CoreOne','Trig1'), (2,'CoreOne','Trig2'),(3,'CorePlus','Trig3'), (4,'CorePlus', 'Trig1'),(5, 'CorePP', 'Trig4')
INSERT INTO @t2 VALUES (1, 123, 'Trig1'), (2,123,'Trig2')

INSERT INTO @t4
SELECT t1.id, t1.idea, t2.ArmNum, t2.[Trigger]
FROM @t1 t1
LEFT JOIN @t2 t2 on t1.[Trigger] =t2.[Trigger]

SELECT DISTINCT idea, ArmNum, 'Y' [Launch?] FROM @t4
WHERE idea NOT IN (SELECT idea FROM @t4 where armNum IS NULL)
GO

如果您在示例数据中再添加3-4个元素,这会有所帮助。很少有更多的触发因素,很少有更多的想法,很少有更多的武器来说明各种情况。然后展示最终结果应该是什么样子。