2014-01-14 4 views
-2

Я пытаюсь заполнить сводную таблицу с целью использования динамических столбцов, но не знаю, как я могу идти об этом - вот пример таблицы данных -Сводная таблица в SQL

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 

Я сожалею, что код не отформатирован хорошо, надеюсь, что это имеет смысл, что я хотел бы достичь.

Извините вопрос уникален на основе timestamp, и я пропустил еще один столбец userid, который ссылается на пользовательскую таблицу.

Заранее спасибо.

+0

У нас может возникнуть проблема. Что делать, если 3 наивысших баллы не совпадают с той же датой? Это сделало бы заголовки столбцов проблематичными. – StuartLC

+0

«Извините, код не отформатирован хорошо», но вы можете редактировать и использовать предварительный просмотр, чтобы отформатировать его еще немного. Во всяком случае, это не на самом деле * код *, и было бы хорошо, если бы вы отредактировали вопрос, чтобы показать код, который у вас есть, и быть конкретным в отношении проблемы или ошибки, которые у вас есть. – Jeroen

+0

hi stuart, я хочу отобразить первые три даты, а затем верхние баллы для этих трех дат. В основном порядок по дате 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

Вот как работают сводные таблицы. Вы должны определить имена столбцов. –

Смежные вопросы