2016-02-24 12 views
-1
一行

我想從東西是這樣的:透視表,使用戶和他們的日期去

username CourseID DateTaken 
mikeb  LST   5/9/2014 
mikeb  SELAGENT001 4/4/2013 
chrisp  AGT001  2/21/2012 
chrisp  SELAGENT001 6/27/2011 

到這樣的事情:

Username LST   SELAGENT001 AGT001 
mikeb  5/9/2014 4/4/2013  
chrisp     6/27/2011 2/21/2012 

我試着用交叉失蹤左右,但因爲我正在處理我很難過的日期。任何幫助?

回答

0

這裏是ANSI SQL解決方案,假設你只有一行username, courseid對它會返回預期的結果。否則,它會爲每一對取最大值datetaken

SELECT 
    username, 
    MAX(CASE WHEN courseid = 'LST' THEN datetaken END) AS lst, 
    MAX(CASE WHEN courseid = 'SELAGENT001' THEN datetaken END) AS selagent001, 
    MAX(CASE WHEN courseid = 'AGT001' THEN datetaken END) AS agt001 
FROM t 
GROUP BY username 

如果你想Postgres的具體答案存在tablefunc模塊crosstab()功能,但我個人總是傾向於超過DBMS特定的便攜式解決方案。

僅供參考,您還可以查詢this answer