1

我终于想通了如何通过一些在线文章的支点来获得这一点。但是我仍然有两个问题,下面发布的代码可以正常工作并返回一年的结果。然而,我仍然遇到的问题是,有一个参数被发送到这个 sproc 调用“DateType”中,它可以是“M”或“Y”。如果是“M”,我需要它遵循以下逻辑。如果它是“Y”,则需要它遵循相同的逻辑但填充“YTD”字段。我不确定如何将“IF”语句集成到此 Pivot 的使用中,或者是否可能。对此的任何帮助将不胜感激。

下面代码中未表示的第二个问题,目前是逻辑显示一年的结果。但是,我还需要在结果字段旁边添加评分字段。示例:'JAN_Result | Jan_Rating | 二月结果 | Feb_Rating...' 可以像这样旋转两个字段吗?

更新的当前逻辑:

'code' Select EmployeeID ,Employee ,EmpGroupID ,PA ,EmpLevel ,ObjectiveName as Objective ,Objectiveid AS Objectiveid ,Weighting ,ReportingYear ,[1] as JAN_Result ,[2] as FEB_Result ,[3] as MAR_Result ,[4] as APR_Result , [5] 作为 MAY_Result ,[6] 作为 JUN_Result ,[7] 作为 JUL_Result ,[8] 作为 AUG_Result ,[9] 作为 SEP_Result ,[10] 作为 OCT_Result ,[11] 作为 NOV_Result ,[12] 作为 DEC_Result ,[13 ] 作为年初至今

From

(

Select 
 EmployeeID
,Employee
,EmpGroupID
,PA
,EmpLevel
,ObjectiveName
,Objectiveid
,Weighting
,ReportingYear
,Result
,Rating

,Max(CASE WHEN r.datetype = 'M' THEN Month(startdate) WHEN r.datetype = 'Y' THEN     13        END) as StartMonth

 From #tblResults R

INNER JOIN @Emphist h 
        ON r.Empgroupid = h.Groupid

LEFT OUTER JOIN Config.tblRatingDescription rt
             ON r.Rating = rt.RatingID

LEFT OUTER JOIN Config.tblRatingDescription rtovr
             ON r.RatingOverride = rtovr.RatingID

WHERE r.datetype IN ('M','Y')
and r.startdate BETWEEN  '2012-01-01' AND '2012-04-01'

Group By
EmployeeID, 
Employee, 
EmpGroupID, 
PA, 
EmpLevel, 
ObjectiveName, 
Objectiveid,
ReportingYear,
Weighting,
h.sortorder,
Result,
Rating

)ps


PIVOT
(
max(result)
FOR StartMonth IN([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13])
) as pvt

'代码'

示例数据:

EmployeeID  Employee  EmpGroupID  PA  EmpLevel  Objective  Jan_Result  Feb_Result 
1010101     TestUser  111         NE CustService  Equip_Res  94.44      9.92    
4

1 回答 1

0

你的说法很大。我不会重复它。基本上,您需要做的就是替换这一行:

,Month(startdate)     as StartMonth

有一个:

,CASE WHEN r.datetype = 'M' THEN Month(startdate) ELSE 13 END as StartMonth

如果还有其他值,您可以继续声明:

,CASE WHEN r.datetype = 'M' THEN Month(startdate) WHEN r.datetype = 'Q' THEN 14 ELSE 13 END as StartMonth
于 2013-09-19T23:01:11.590 回答