我有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