首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql中SUM(IF)条件的故障

mysql中SUM(IF)条件的故障
EN

Stack Overflow用户
提问于 2014-08-28 10:45:25
回答 1查看 43关注 0票数 0

有人能帮我修复下面的查询吗?我需要生成一份报告,能够计算出在没有特定时间的情况下发送了多少份TOB &签名。有3种不同的TOB表。下面是我的SQL查询:

代码语言:javascript
复制
select cl.name, con.name,
    COUNT(IF(DATE( tp.sent_on ) between '2012-01-01' AND '2012-12-31', 1, 0))  as "TOB Perm Sent",
    COUNT(IF(DATE( tp.signed_on ) between '2012-01-01' AND '2012-12-31', 1, 0))  as "TOB Perm Signed",
    COUNT(IF(DATE( tt.sent_on ) between '2012-01-01' AND '2012-12-31', 1, 0))  as "TOB Temp Sent",
    COUNT(IF(DATE( tt.signed_on ) between '2012-01-01' AND '2012-12-31', 1, 0))  as "TOB Temp Signed",
    COUNT(IF(DATE( tc.sent_on ) between '2012-01-01' AND '2012-12-31', 1, 0))  as "TOB Contract Sent",
    COUNT(IF(DATE( tc.signed_on ) between '2012-01-01' AND '2012-12-31', 1, 0))  as "TOB Contract Signed"
FROM clients cl
    LEFT OUTER JOIN consultants con ON cl.CIC = con.con_id
    LEFT OUTER JOIN tob_perm tp ON tp.client_id = cl.client_id
    LEFT OUTER JOIN tob_temp tt ON tt.client_id = cl.client_id
    LEFT OUTER JOIN tob_contract tc ON tc.client_id = cl.client_id
WHERE cl.status IN(1) and cl.client_id = 16
GROUP BY cl.client_id
order by cl.client_id asc

样本数据:咨询公司表

代码语言:javascript
复制
id       name
-----------------
 1       Andy

客户端表

代码语言:javascript
复制
id       name       con_id
----------------------------
 1     Client A        1

TOB Perm

代码语言:javascript
复制
id       client_id          sent_on          signed_on
-------------------------------------------------------
 1           1            2012-02-05         0000-00-00
 2           1            2012-10-09         2012-06-03

TOB温度

代码语言:javascript
复制
id       client_id          sent_on          signed_on
-------------------------------------------------------
 1           1            0000-00-00         2012-08-30
 2           1            0000-00-00         2012-02-19
 3           1            2012-10-09         2012-06-03

TOB合同

代码语言:javascript
复制
id       client_id          sent_on          signed_on
-------------------------------------------------------
 1           1            2012-08-30         0000-00-00 

我想要产生的表结果如下:

代码语言:javascript
复制
No    Client Name    Consultant     TOB perm sent     TOB perm signed     TOB temp sent       TOB temp signed      TOB contract sent       TOB contract signed
-----------------------------------------------------------------------------------------------------------------------------------------------------------
1      Client A        Andy              2                   1                  1                     3                    1                       0        

有人能帮我提一下问题吗?提前谢谢。

更新我认为我的IF条件有问题:

代码语言:javascript
复制
IF(DATE( tp.sent_on ) between '2012-01-01' AND '2012-12-31', 1, 0)

有人能帮我解决这个问题吗?谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-08-28 10:46:43

count替换为sum以使其工作。

count对记录进行计数,而不关心条件。例如使用

代码语言:javascript
复制
SUM(DATE( tp.sent_on ) between '2012-01-01' AND '2012-12-31')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25546891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档