SQL独特的分组?

DDi*_*ita 0 sql group-by

这是我的查询:

SELECT 
  dbo.EmailCampaignTracking.emailOpened,
  dbo.EmailCampaignTracking.emailUnsubscribed,
  dbo.EmailCampaignTracking.emailBounced,
  COUNT(*)
FROM
  dbo.EmailCampaignTracking
  Group By
  dbo.EmailCampaignTracking.emailBounced,
  dbo.EmailCampaignTracking.emailUnsubscribed,
  dbo.EmailCampaignTracking.emailOpened
Run Code Online (Sandbox Code Playgroud)

以下是我的结果:

    emailOpened emailUnsubscribed emailBounced Totals

    True          False            False          6      
    False         False            True           1   
    True          True             False          2
Run Code Online (Sandbox Code Playgroud)

我希望电子邮件opend的总数为8而不是6.我意识到我要求SQL将它们分组.我只是想知道如何为每一列获得Distict总数.所以,emailOpened将是8,emailUnsubscribed将是1,而emailBounced将是2.谢谢

sha*_*esh 5

SELECT Count(emailOpened) AS OpenedCount,
Count(emailUnsubscribed) as UnsubCount,
Count(emailBounced) as BouncedCount
FROM dbo.EmailCampaignTracking
Run Code Online (Sandbox Code Playgroud)

编辑:如果您想在标志为真时计算记录,可以按如下方式编写

SELECT SUM(CASE emailOpened WHEN true then 1 else 0) AS OpenedCount,
SUM(CASE emailUnsubscribed WHEN true then 1 else 0) as UnsubCount,
SUM(CASE emailBounced WHEN true then 1 else 0) as BouncedCount
FROM dbo.EmailCampaignTracking
Run Code Online (Sandbox Code Playgroud)

EDIT2:在上面的查询中,替换true为被解释为true的位值(可以是0).