大家好,我们有两个表“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/