MYSQL中的条件记录选择

时间:2014-07-29 16:30:34

标签: mysql

我正在尝试构建一个已失效的付款报告,该报告按季度显示季度数据,但会根据年份进行评估。

E.g。我想返回前几年付款的所有人的名字,但不是今年,并按季度显示结果。

到目前为止我有这个,但是让它返回正确的名字仍然是我无法想到的。​​

SELECT 
IDNo, 
Year(now()) as CurrentYear,
concat(year(pdate),'-Q',quarter(pdate)) as YrQtr,
Concat(IDNo,' - ',Fname,' ',Lname) as Fullname,
sum(amt) as Amt

FROM Payments 
GROUP BY fname, lname, YrQtr
Having Sum(if(year(pdate)=Year(now()),1,0)) < 1 and (Sum(if(year(pdate)=Year(now())-1 ,1,0)) >0 or Sum(if(year(pdate)=Year(now())-2 ,1,0)) >0)

任何帮助,方向,即使让我知道这是不可能的,将不胜感激。

感谢,

编辑: 结果将显示付款人1,他在2012年或2013年但未在2014年付款,按季度分类

2012-Q1   2013-Q3
$xxx       $xxx 

但不是付款人2,已在2012年和2014年付款。(或任何已在2014年付款的付款人)

1 个答案:

答案 0 :(得分:0)

我使用以下解决方案和临时表解决了这个问题;

DROP temporary table IF EXISTS LapsedRPT;'

Create temporary table  LapsedRPT
SELECT IDno, 
Concat(IDNo,' - ',Fname,' ',Lname) as Fullname
FROM Payments
GROUP BY FullName
having year(max(ddate)) < year(now());

Select 
year(now()) as CurrentYear,
Year(pdate) as PYr,
quarter(pdate) as PQTR,
concat(year(pdate),'-Q',quarter(ddate)) as YrQtr,
Fullname,
sum(amt) as Amt
from LapsedRPT
Where year(pdate) > Year(now())-3
Group by FullName, pyr, yrQtr;