用内连接sql查询计数

Eni*_*ate 5 t-sql sql-server sql-server-2008 sql-server-2012

大家好我们有两个表"Subscriptioninfo,activationinfo",这两个表的结构是这样的

Subscriptioninfo表

   cert_id (int, PK)
   customer_email(string)
   subscription_key(string)
   activated_on (datetime)
Run Code Online (Sandbox Code Playgroud)

activationinfo表:

    cert_id (int)
    activationcode(string)
    subscription_key(string , FK)
    activated_ts(datetime)
Run Code Online (Sandbox Code Playgroud)

如果具有相同年份和客户电子邮件ID的Subscriptioninfo条目,则以下查询将计数为" " (这很好)

SELECT COUNT(*) FROM Subscriptioninfo WITH (NOLOCK)
WHERE year(activated_On) = year(getdate()) AND customer_email =@CustomerEmail
Run Code Online (Sandbox Code Playgroud)

我们有一个sp将数据插入到两个表中(即)一个条目到Subscriptioninfo,其中有四个条目到activationinfo

如果subscriinfo的一个条目和activationinfo的两个条目,我需要将count返回为"0"

我需要返回count为"1",如果一个条目的subscriptioninfo和四个条目到activationinfo ..

请问有什么人请帮忙解决这个问题怎样才能通过join子句得到那个数.

提前谢谢了...

尝试使用此查询,但它给予activationinfo条目计数(即)4 而不是1

 SELECT COUNT(*) FROM subscriptioninfo csi join activationinfo aci on csi.subscription_key = aci.subscription_key
 WHERE year(Activated_On)  = year(getdate()) AND customer_email = 'xxx@cc.com' group by csi.subscription_key
Run Code Online (Sandbox Code Playgroud)

Vig*_*r A 3

使用CASE语句

SELECT CASE WHEN COUNT(*) = 4 THEN 1
            WHEN COUNT(*) < 4 THEN 0
       END CountResults
FROM subscriptioninfo csi 
join activationinfo aci on csi.subscription_key = aci.subscription_key
WHERE year(Activated_On)  = year(getdate()) AND customer_email = 'xxx@cc.com' group by csi.subscription_key
Run Code Online (Sandbox Code Playgroud)