2015-06-09 54 views
0

我希望有人能帮我看看这个已经在另一个数据库上工作但现在失败的查询。mysql pivot not counting日期列

以下内容基于一个数据透视表,其中左侧为数据源,左侧为右侧数据,除了只拒绝计数的一列外,所有工作都正常!

Count(l.CompDate) As Submitted输出与Count(l.id) As Leads相同的数字,l.ComDate字段是基于日期的列,如果列中有日期应该被计数但它不是,它只计数所有记录。

任何人都可以知道我要去哪里吗?我一直在这上好几天。

Select *, If(q.Source Is Null, 1, 0) As remove From 
(Select l.Source,  
Sum(Month(l.CompDate) = 1) As Jan, 
Sum(Month(l.CompDate) = 2) As Feb, 
Sum(Month(l.CompDate) = 3) As Mar,  
Sum(Month(l.CompDate) = 4) As Apr,  
Sum(Month(l.CompDate) = 5) As May,  
Sum(Month(l.CompDate) = 6) As Jun,  
Sum(Month(l.CompDate) = 7) As Jul,  
Sum(Month(l.CompDate) = 8) As Aug,  
Sum(Month(l.CompDate) = 9) As Sep,  
Sum(Month(l.CompDate) = 10) As Oct,  
Sum(Month(l.CompDate) = 11) As Nov,  
Sum(Month(l.CompDate) = 12) As Decb, 
Count(l.id) As Leads, 
Count(l.CompDate) As Submitted, 
ROUND(Count(l.id)*100/(Count(l.CompDate)), 2) As Conversion 
From  tbl_lead l  
Where  Year(l.LeadDate) = 2015  
Group By l.Source With Rollup) q 

回答

0

表达:

Count(l.CompDate) As Submitted, 

不正是你表达。它正在计算l.CompDatenon-NULL值。

目前还不清楚你想要什么。如果你想不同日期值,条件,下面会工作的一个数:

Count(distinct l.CompDate) As Submitted, 

Count(distinct date(l.CompDate)) As Submitted, 
+0

您好,感谢您。此表有6条记录,所以'Count(l.id)As Leads'输出正确6.在'Count(l.CompDate)As Submitted'中只有3条记录的值,样本表上的这些记录具有相同的日期值但它将它计为表中的记录总数为6,而不是具有日期值的列? 理想情况下,这应该显示6条线索| 3提交 –

+0

@GaryBrett。 。 。因此,“计数(不同)”。你甚至试过答案吗? –