Sql 在多个列中搜索多个变量,然后按变量名称拆分

Sql 在多个列中搜索多个变量,然后按变量名称拆分,sql,sql-server-2012,Sql,Sql Server 2012,我是一个完整的SQLNoob,我知道这应该是一个非常简单的查询,但是我在这里找不到任何对我有帮助的东西。谢谢你抽出时间 我有几个专栏,它们对发生在其中列出的人身上的事件进行了编码。我想通过代码(例如A106或B465)进行搜索,以计算事件发生的次数,无论它在哪一列。因此,本质上搜索所有事件列,并计算4个不同事件出现的次数,结果按事件代码分割。就我的结构而言(可能正确,也可能不正确),我拥有的是: 我知道这并不多,但我已经写了大约100个其他代码片段,包括每次我被困在如何按最后的事件代码拆分时尝试

我是一个完整的SQLNoob,我知道这应该是一个非常简单的查询,但是我在这里找不到任何对我有帮助的东西。谢谢你抽出时间

我有几个专栏,它们对发生在其中列出的人身上的事件进行了编码。我想通过代码(例如A106或B465)进行搜索,以计算事件发生的次数,无论它在哪一列。因此,本质上搜索所有事件列,并计算4个不同事件出现的次数,结果按事件代码分割。就我的结构而言(可能正确,也可能不正确),我拥有的是:

我知道这并不多,但我已经写了大约100个其他代码片段,包括每次我被困在如何按最后的事件代码拆分时尝试
UNION
所有列(对保留关联的主键感到困惑)

谢谢:)

更新: 我希望得到的是

Event Code   Number of Events
=========== =================
A106         554
A107         4233
B465         4196
E713         34
我正在运行下面建议的代码,但它是一个庞大的数据集(我实际上在24列中搜索7个代码,到目前为止,我的查询已经运行了很长时间),我还没有得到任何输出

第二版 好的,刚刚从下面的建议答案中得到了查询结果。。我得到了我正在寻找的表格大纲,但是当我知道还有更多的代码时,它只给出每个代码1的计数? 例如


只需将所有4列合并即可:

select code, count(*) as cnt 
from(
     select event1 as code from log
     union all
     select event2 as code from log
     union all
     select event3 as code from log
     union all
     select event4 as code from log
    )t
where code in('A106', 'A107', 'B465', 'E713')
group by code

您可以发布一些示例模式和基于此的预期输出吗?请参阅此处以及快速获取帮助的方法:本文可能会帮助您您好,谢谢,我尝试了这一点,但它仅显示每个事件代码的计数1,而我知道此代码出现的次数更多。还有一个附带问题,为什么括号后面的't'是必需的?语法要求t-您应该为子查询别名。这个select语句应该可以工作。也许你做错了什么。
CODE   CNT
====  ====
A105   1
A106   1
B465   1
E713   1
F432   1
F465   1
K364   1
select code, count(*) as cnt 
from(
     select event1 as code from log
     union all
     select event2 as code from log
     union all
     select event3 as code from log
     union all
     select event4 as code from log
    )t
where code in('A106', 'A107', 'B465', 'E713')
group by code