SELECTDefectType = CASE WHEN ((abs(vcr.YTD) < @e1)
AND (abs(cr.Month1) < @e1)
AND (abs(vcr.Month3) < @e1)
--AND (abs(vcr.Month6) < @e1)
AND (abs(vcr.Year1) < @e1)
AND (abs(vcr.Year3) < @e1)
AND (abs(vcr.Year5) < @e2)
AND (abs(vcr.Year10) < @e2)
AND (abs(vcr.SI) < @e2))
THEN 'Normal' WHEN ((abs(vcr.YTD) < @e1)
AND (abs(vcr.Month1) < @e1)
AND (abs(vcr.Month3) < @e1)
--AND (abs(vcr.Month6) < @e1)
AND (abs(vcr.Year1) < @e1)
AND (abs(vcr.Year3) < @e1)
AND (abs(vcr.Year5) < @e2)
AND (abs(vcr.Year10) < @e2)
AND (abs(vcr.SI) >= @e2))
THEN 'Warning (SI Only Discrepancy)' WHEN (abs(vcr.YTD) < @e1
AND abs(vcr.Month1) < @e1
AND abs(vcr.Month3) < @e1
--AND abs(vcr.Month6) < @e1
AND abs(vcr.Year1) < @e1
AND abs(vcr.Year3) < @e1
AND abs(vcr.Year5) < @e2
AND abs(vcr.Year10) >=@e2
AND v.ShareClassTypeId = '3')
THEN 'Warning (B Share)' WHEN (abs(vcr.YTD) < @e1
AND abs(vcr.Month1) < @e1
AND abs(vcr.Month3) < @e1
--AND abs(vcr.Month6) >= @e1
AND abs(vcr.Year1) < @e1
AND
(abs(vcr.Year3) >= @e1
OR abs(vcr.Year5) >= @e2
OR abs(vcr.Year10) >= @e2)
AND v.DeclaresDailyDividend = '1')
THEN 'Warning (Daily Dividend)' ELSE 'Defect-candidates' ENDFROM (SELECT * FROM dbo.ReturnData WHERE FamilyName = @FamilyName AND Year=@Year AND Month = @Month AND Source = @Source) AS rd
LEFT JOIN(
(SELECT * FROM ViewCompareResult WHERE FamilyName = @FamilyName AND Year=@Year AND Month = @Month AND Source = @Source) AS vcr
LEFT JOIN
AuditRecord ar
ON ar.FamilyName = vcr.FamilyName AND ar.Year = vcr.Year AND ar.Month = vcr.Month AND ar.Id = vcr.Id
INNER JOIN
(SELECT FundClassId, FundClassName,FamilyName,Ticker,Cusip,ISIN,Domicile,Region,SecurityType,Status,PerfReady,InceptionDate,ShareClassTypeId,DataReadiness,DeclaresDailyDividend
FROM RawData..ViewSecurityTypeBaseTable) v
ON v.FundClassId = vcr.Id
INNER JOIN
(SELECT * FROM dbo.ViewMonthlyReturn WHERE Year=@Year AND Month = dbo.getNumberMonth(@Month)) AS xd
ON vcr.Id = xd.Id AND vcr.Year = xd.Year AND dbo.getNumberMonth(vcr.Month) = xd.Month
)ON vcr.Id = rd.Id AND vcr.FamilyName = rd.FamilyName AND vcr.Source = rd.SourceLEFT JOIN
dbo.AnalystFamilyLinking a
ON a.Family = rd.FamilyName and a.Source = rd.Source这个select的结果都进了case when 的else 里面,虽然有明显符合条件的其他选项,如“Normal”,是因为判断绝对值的原因吗?或者是数据类型转化的问题?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货