sql-server - 使用内连接 sql 查询进行计数

标签 sql-server sql-server-2008 tsql sql-server-2012

大家好,我们有两个表“Subscriptioninfo,activationinfo” 两个表的结构如下

订阅信息表

   cert_id (int, PK)
   customer_email(string)
   subscription_key(string)
   activated_on (datetime)

激活信息表:

    cert_id (int)
    activationcode(string)
    subscription_key(string , FK)
    activated_ts(datetime)

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

SELECT COUNT(*) FROM Subscriptioninfo WITH (NOLOCK)
WHERE year(activated_On) = year(getdate()) AND customer_email =@CustomerEmail

我们有一个 sp 会将数据插入到两个表中(即,订阅信息有一个条目,激活信息有四个条目

如果订阅信息有一个条目,激活信息有两个条目,我需要将计数返回为“0”

如果订阅信息有一个条目,激活信息有四个条目,我需要将计数返回为“1”..

是否有人可以帮助解决此查询,我怎样才能使用 join 子句获得该计数..

提前非常感谢...

尝试使用此查询,但它给出了激活信息条目计数(即)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

最佳答案

使用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

关于sql-server - 使用内连接 sql 查询进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36714386/

相关文章:

sql - 删除没有主键的重复项

sql - 插入与插入

sql - 更新多列时,包含 .WRITE 子句的 UPDATE 是否是原子的?

sql-server - 在.NET Compact Framework应用程序中显示最新插入的数据

sql-server - 使用计数的意外输出sql server

sql-server-2008 - 来自 aspnet_regsql 的意外错误消息

sql - 如何在 SSIS 包中设置变量?

sql - sql server中nolock的实际用途是什么

sql-server - 当 "include"列不同时为同一列创建索引的正确方法

sql-server - SQL Server - 实现序列