2014-01-14 40 views
-2

我試圖填充從視圖數據透視表使用動態列,但不知道我怎麼能去這一點 - 這裏是表中的數據樣本 -透視表

question | userid | assessment_date| score 
--------------------------------- 
Q1 1 2014-01-12 12:16:26.870 40 
Q1 1 2014-01-14 12:28:38.943 40 
Q1 1 2014-01-03 11:13:35.527 85 
Q1 2 2014-01-09 11:16:19.450 20 
Q1 2 2014-01-11 12:11:18.720 20 
Q10 1 2014-01-14 12:28:38.943 70 
Q10 1 2014-01-03 11:13:35.527 35 
Q10 1 2014-01-11 12:11:18.720 35 
Q10 2 2014-01-12 12:16:26.870 35 
Q11 2 2014-01-11 12:11:18.720 28 
Q11 2 2014-01-12 12:16:26.870 28 
Q11 2 2014-01-14 12:28:38.943 28 
Q12 2 2014-01-12 12:16:26.870 24 
Q12 2 2014-01-11 12:11:18.720 64 

我現在想顯示具有最高評分結果前十名類似這樣的問題 -

question | 11-01-2014 | 12-01-2014 | 14-01-2014 
    Q1 | 70 | 60 | 65 
    Q3 | 85 |45 | 75 
    Q7 |87 |54 | 63 

我很抱歉的代碼沒有被格式化很好,希望這有一定道理,我想達到的目標。

對不起,基於時間戳的問題是唯一的,我錯過了一個鏈接到用戶表的更多列用戶標識。

在此先感謝。

+0

這裏可能有問題。如果3個最高分數不完全在同一日期怎麼辦?這會使列標題有問題。 – StuartLC

+0

「抱歉代碼未格式化好」,但您可以編輯並使用預覽格式化一些。無論如何,它實際上並不是*代碼*,如果您編輯問題以顯示您擁有的代碼並針對您遇到的問題或錯誤進行具體說明,那就太好了。 – Jeroen

+0

嗨斯圖爾特,我想顯示這三個日期的前三個日期,然後是頂級問題分數。基本上按日期排序desc,然後問痠痛desc.Thanks – Tajuddin

回答

1

像這樣的東西應該讓你開始,它是以數據透視表的一般格式寫成的,但它是空碼,所以你可能需要改變它。

SELECT question, '2014-01-11','2014-01-12','2014-01-14' 
FROM 
(SELECT question, assessment_date, score FROM myTableName) AS SourceTable 
PIVOT 
(
SELECT SUM(score) as SummedScore, 
FOR assessment_date IN ('2014-01-11','2014-01-12','2014-01-14') 
) AS PivotTable 
+0

由於craig,日期字段不固定。它可以是不同用戶的不同日期。 – Tajuddin

+0

這就是數據透視表的工作原理。您必須定義列名稱。 –