Запрос кросс-таблицы - PullRequest
       14

Запрос кросс-таблицы

0 голосов
/ 23 января 2010

У меня есть таблица с посещаемостью сотрудников - скажем, OATT. Ниже приводится структура и пример данных

AttDate EmpId EmpName AttCode InTime OutTime
01-10-2009 1 Jain, Rahul P 0900 1830
02-10-2009 1 Jain, Rahul P 0900 1830
03-10-2009 1 Jain, Rahul P 0900 1830
04-10-2009 1 Jain, Rahul P 0900 1830
05-10-2009 1 Jain, Rahul P 0900 1830
06-10-2009 1 Jain, Rahul WO 0900 1830
07-10-2009 1 Jain, Rahul WO 0900 1830
08-10-2009 1 Jain, Rahul P 0900 1830
09-10-2009 1 Jain, Rahul L 0900 1830
10-10-2009 1 Jain, Rahul P 0900 1830
01-10-2009 1 Jain, Rahul A 0900 1830

Мне нужен следующий результат:

EmpId 01-10 02-10 03-10 04-10 05-10
1 P P P P P
2 P P P L P
3 P P P P A

Я знаю, что это можно сделать с помощью сводных запросов, но мне нужен динамический запрос, чтобы сделать это для указанного диапазона дат. Я использую SQL Server 2005.

Ответы [ 3 ]

1 голос
/ 23 января 2010

См. аналогичный вопрос / ответ с динамическим sql.

1 голос
/ 23 января 2010

Ключевое слово PIVOT может помочь, но даже при этом вам все равно нужно знать, какие у вас столбцы, прежде чем выполнять запрос. Обычно это означает выполнение двух запросов: один для получения списка имен столбцов, а затем второй для фактического получения результатов.

0 голосов
/ 23 января 2010

Одним из решений является то, что Query распечатывает код TSQL в переменную и после этого вызвать exec @ variable

...