小编mik*_*111的帖子

计算 SQL 表中 1 个以上行中出现 2 个不同值的次数

我对 SQL 相当陌生,在稍微复杂的 SQL 查询的最后一步中遇到了一些问题。我想计算表中两个不同值出现在超过 1 行中的次数。

我的具体场景是,我的表也存储来自系统的消息/警报。这些警报会发送给需要响应的多个人员。我想计算有多少收件人响应了每个警报。

我已将查询编辑到我所坚持的部分,即:

SELECT DISTINCT AlertID, count(RecipientID) - count(Distinct RecipientID) as Replies, 
FROM [myDB].[dbo].[Alerts]   
Run Code Online (Sandbox Code Playgroud)

此查询显示每个警报中有多少条消息,不包括系统发送给每个收件人的原始消息。问题在于,如果有人对单个警报响应两次,则会将其计为两次响应,而不是 1(这就是我想要的)。

我认为我可以通过计算每个 DISTINCT AlertID 以及 DISTINCT 收件人 ID 与 AlertID 一起出现在超过 1 行中的次数来做到这一点。如果有人回复两次也没关系,因为只要超过一次,就算作一次回复。我很难让它发挥作用。

我的数据如下所示:

RecipientID  MsgContents        SentBy       AlertID
12345        Msg1               mySystem     11111
98765        Msg1               MySystem     11111
12345        1st Reply to Msg1  John Doe     11111
12345        2nd Reply to Msg1  John Doe     11111
98765        reply to Msg1      Mike Smith   11111
12345        Msg3               mySystem     33333
12345        Reply to Msg3      John Doe …
Run Code Online (Sandbox Code Playgroud)

sql vb.net sql-server count

5
推荐指数
1
解决办法
1453
查看次数

标签 统计

count ×1

sql ×1

sql-server ×1

vb.net ×1