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)
使用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)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |