select * from (
select soi.*,timestampdiff(year,soi.RegDate, "2015-12-31" ) as counts1,count(ii.CertificateRegNum) counts2,
(select count( DISTINCT iii.CertificateRegNum ) from InspectionInfo iii WHERE iii.AYear between ('2015'-counts1) and '2015' and iii.CertificateRegNum = soi.CertificateRegNum) counts3
from SocialOrgBasicInfo soi left join InspectionInfo ii on soi.CertificateRegNum = ii.CertificateRegNum
where soi.CertificateRegNum not in (SELECT DISTINCT CertificateRegNum from SocialOrgBasicInfo WHERE AuditStatus =-1)
and ii.AYear< "2015" and soi.RegDate !="" GROUP BY ii.CertificateRegNum
) as bb where counts2<counts1 AND 1=1 and 1=1 and 1=1 and 1=1
现在数据多了 不知道该怎么简化了
select soi.*,timestampdiff(year,soi.RegDate, "2015-12-31" ) as counts1,count(ii.CertificateRegNum) counts2,
(select count( DISTINCT iii.CertificateRegNum ) from InspectionInfo iii WHERE iii.AYear between ('2015'-counts1) and '2015' and iii.CertificateRegNum = soi.CertificateRegNum) counts3
from SocialOrgBasicInfo soi left join InspectionInfo ii on soi.CertificateRegNum = ii.CertificateRegNum
where soi.CertificateRegNum not in (SELECT DISTINCT CertificateRegNum from SocialOrgBasicInfo WHERE AuditStatus =-1)
and ii.AYear< "2015" and soi.RegDate !="" GROUP BY ii.CertificateRegNum
) as bb where counts2<counts1 AND 1=1 and 1=1 and 1=1 and 1=1
现在数据多了 不知道该怎么简化了
代码有点乱,先帮你格式化一下:
SELECT *
FROM ( SELECT soi.* ,
timestampdiff(year, soi.RegDate, "2015-12-31") AS counts1 ,
COUNT(ii.CertificateRegNum) counts2 ,
( SELECT COUNT(DISTINCT iii.CertificateRegNum)
FROM InspectionInfo iii
WHERE iii.AYear BETWEEN ( '2015' - counts1 ) AND '2015'
AND iii.CertificateRegNum = soi.CertificateRegNum
) counts3
FROM SocialOrgBasicInfo soi
LEFT JOIN InspectionInfo ii ON soi.CertificateRegNum = ii.CertificateRegNum
WHERE soi.CertificateRegNum NOT IN ( SELECT DISTINCT
CertificateRegNum
FROM SocialOrgBasicInfo
WHERE AuditStatus = -1 )
AND ii.AYear < "2015"
AND soi.RegDate != ""
GROUP BY ii.CertificateRegNum
) AS bb
WHERE counts2 < counts1
AND 1 = 1
AND 1 = 1
AND 1 = 1
AND 1 = 1