One way to do this (which also works in SQL Server 2008)
SELECT RiskID, RiskName,
MAX(CASE WHEN rnum = 1 THEN RiskDate END) RecentDate,
MAX(CASE WHEN rnum = 1 THEN RiskScore END) RecentScore,
MAX(CASE WHEN rnum = 2 THEN RiskDate END) SecondDate,
MAX(CASE WHEN rnum = 2 THEN RiskScore END) SecondScore,
ItemID
FROM
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY RiskID ORDER BY RiskDate DESC) rnum
FROM Risk
WHERE ItemID = 12
) q
WHERE rnum <= 2
GROUP BY ItemID, RiskID, RiskName
ORDER BY RiskID
Conclusion:
| RISKID | RISKNAME | RECENTDATE | RECENTSCORE | SECONDDATE | SECONDSCORE | ITEMID |
| -------- | ---------- | ------------ | ------------- | - ---------- | ------------- | -------- |
| 1 | ABC | 2014-01-15 | 5 | 2013-12-20 | 8 | 12 |
| 2 | BC | 2014-01-12 | 9 | 2013-12-17 | 10 | 12 |
SQLFiddle