Php mysql中的SUM(IF)条件有问题
有人能帮我解决下面的问题吗?我需要生成一份报告,能够计算在没有特定期限的情况下发送和签署了多少TOB。有3个不同的TOB表。下面是我的SQL查询:Php mysql中的SUM(IF)条件有问题,php,mysql,date,Php,Mysql,Date,有人能帮我解决下面的问题吗?我需要生成一份报告,能够计算在没有特定期限的情况下发送和签署了多少TOB。有3个不同的TOB表。下面是我的SQL查询: 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-
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
样本数据:
顾问表
id name
-----------------
1 Andy
id name con_id
----------------------------
1 Client A 1
客户表
id name
-----------------
1 Andy
id name con_id
----------------------------
1 Client A 1
TOB Perm
id client_id sent_on signed_on
-------------------------------------------------------
1 1 2012-02-05 0000-00-00
2 1 2012-10-09 2012-06-03
TOB温度
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合同
id client_id sent_on signed_on
-------------------------------------------------------
1 1 2012-08-30 0000-00-00
我想产生的结果如下表所示:
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状况有问题:
IF(DATE( tp.sent_on ) between '2012-01-01' AND '2012-12-31', 1, 0)
有人能帮我解决这个问题吗?谢谢用
sum
替换count
,使之生效
count
对记录进行计数,不关心条件。例如使用
SUM(DATE( tp.sent_on ) between '2012-01-01' AND '2012-12-31')
嗨,我以前试过SUM,但结果不正确。我写条件的方式有问题吗?没有,条件似乎很好。只需使用
sum()
我尝试使用sum(),但结果为0,如果COUNT()则所有列都为2