我有mysql查询,输出年份导致v销售,并计算转换率在2012年工作很好,因为它只持有一年的数据。现在,2013年我需要改变它的工作方式,但已经陷入困境。如果铅排在2012年12月,然后成为一个销售在2013年它从我的查询输出ommitted因为它仅要求2013年mysql跨越多年的where子句?
Select
q.*,
ROUND(100 * q.Comms/q.Total, 2) As Conversion,
If(q.Adviser Is Null, 1, 0) As remove
From
(Select
a.ContactFullName As Adviser,
Sum(Year(b.CaseDate) = 2013 And Month(b.CaseDate) = 1) As Jan,
Sum(Year(b.CaseDate) = 2013 And Month(b.CaseDate) = 2) As Feb,
Sum(Year(b.CaseDate) = 2013 And Month(b.CaseDate) = 3) As Mar,
..... Dec
Sum(Case
When Year(b.CaseDate) = 2013 And Month(b.CaseDate) Between '1'
And '12' Then 1 Else 0 End) As Total,
Sum(Case When (Year(b.CaseDate) = 2012 Or Year(b.CaseDate) = 2013) And Year(b.StatusSubmittedDate) = ".(int)$_POST['year']." And Month(b.StatusSubmittedDate) Between ".(int)$_POST['start']." And ".(int)$_POST['end']." Then 1 Else 0 End) As Comms
From
tblcontacts a Inner Join
tblcases b On a.ContactID = b.ContactAssignedTo
Group By
a.ContactFullName With Rollup) q
这适用于CaseDate;
Sum(Case When (Year(b.CaseDate) = 2012 Or Year(b.CaseDate) = 2013) And Year(b.StatusSubmittedDate) = 2013 And Month(b.CaseDate) Between '1' And '12' Then 1 Else 0 End) As Comms
这donly显示引线进入2013年提交&;
Sum(Case When (Year(b.CaseDate) = 2012 Or Year(b.CaseDate) = 2013) And Year(b.StatusSubmittedDate) = ".(int)$_POST['year']." And Month(b.CaseDate) Between ".(int)$_POST['start']." And ".(int)$_POST['end']." Then 1 Else 0 End) As Comms
非常感谢
@ EvilBob22-非常感谢您的回答,抱歉,延迟回复。这很好,立即解决了这个问题,所以非常感谢你。不幸的是,它是我的错,但是当我发布时,我使用了2012年和2013年,因为这是我的本地开发人员的工作方式,但是我使用的是从选择字段中取得的值,并且不知何故这再次打破了它,这让我感到莫名其妙更多!我已经更改了原始代码以反映它的实况。无法看到如何使用代码而不是2012/2013会破坏查询? – gary
所有排序现在有一些变化,工作代码在上面的原始帖子。谢谢@ EvilBob22 – gary
真棒,很高兴它解决了。 – EvilBob22