考えられるステータス値が 4 つしかないことがわかっており、cust_id/status の任意の組み合わせについて最新の日付が必要であると仮定します。
DECLARE @table_2 TABLE(Cust_id INT, status INT, date_changed DATE);
INSERT @table_2 VALUES
(1,1,SYSDATETIME()),
(2,1,SYSDATETIME()),
(3,1,DATEADD(DAY, 1, SYSDATETIME())),
(3,1,SYSDATETIME()),
(1,2,SYSDATETIME());
SELECT cust_id,
status1 = [1], status2 = [2],
status3 = [3], status4 = [4]
FROM
(
SELECT cust_id, status, date_changed
FROM @table_2
) AS t
PIVOT (MAX(date_changed)
FOR [status] IN ([1],[2],[3],[4])) AS p
ORDER BY cust_id;
結果:
cust_id status1 status2 status3 status4
------- ---------- ---------- ------- -------
1 2012-06-10 2012-06-10 NULL NULL
2 2012-06-10 NULL NULL NULL
3 2012-06-11 NULL NULL NULL
これが標準的な方法です。目標や、潜在的なステータス値の数を事前に知っているか、存在するステータス値の列のみを表示したいかによって、より良いアプローチがあるかもしれません。これらの状況のいずれかに該当する場合は、質問を更新してください。