前言我是一个完整的SQL菜鸟,我知道这可能是一个非常简单的查询,但我在这里找不到任何帮助我的东西。谢谢你的时间。
我有几个列将事件编码发生在其中列出的人员身上。我想通过代码搜索(例如A106或B465)来计算事件发生的次数,无论它在哪一列。所以基本上搜索所有事件列并计算多少次4不同的事件出现,结果由事件代码分开。到目前为止,我的结构(可能是也可能不对)是:
SELECT COUNT()
FROM EVENTSLOG
WHERE EVENT1 IN ('A106', 'A107', 'B465', 'E713') OR
EVENT2 IN ('A106', 'A107', 'B465', 'E713') OR
EVENT3 IN ('A106', 'A107', 'B465', 'E713') OR
EVENT4 IN ('A106', 'A107', 'B465', 'E713')
GROUP BY
我知道这不是很多,但我已经写了大约100个其他代码片段,包括每次我和UNION
所有列(对于保留关联的主键感到困惑) #39;我最终陷入了如何通过事件代码进行分割。
谢谢:)
我希望得到的是
Event Code Number of Events
=========== =================
A106 554
A107 4233
B465 4196
E713 34
我正在运行下面建议的代码,但它是一个庞大的数据集(我实际上是在搜索24个列中搜索7个代码,到目前为止,我的查询已经运行了很长时间) - 而且我没有' t还有任何产出。
好的,只是从下面的建议答案中得到了查询结果..然后我找回了我正在寻找的表格大纲,但是当我知道有超过每个代码时,它只给出了1的计数那? 例如
CODE CNT
==== ====
A105 1
A106 1
B465 1
E713 1
F432 1
F465 1
K364 1
答案 0 :(得分:0)
只需要对所有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