Конвертировать строки в столбцы динамически - PullRequest
0 голосов
/ 14 марта 2011

У меня есть таблица:

name | surname | project | dates | hours
aaa aaaa 1 12.08.2011 10
aaa aaaa 1 13.08.2011 8
aaa aaaa 1 14.08.2011 7

И мне нужен такой результат:

name | surname | project | dates | hours | dates | hours | dates | hours | total
aaa aaaa 1 12.08.2011 10 13.08.2011 8 14.08.2011 7 25

SELECT name,surname,project
MAX(DECODE(C,1,dates)) dates,
MAX(DECODE(C,1,hours)) hours,
MAX(DECODE(C,2,dates)) dates,
MAX(DECODE(C,2,hours)) hours,
MAX(DECODE(C,3,dates)) dates,
MAX(DECODE(C,3,hours)) hours,
sum(hours) as Total
FROM (SELECT name,surname,project,dates,hours ,ROW_NUMBER() OVER(PARTITION BY project ORDER BY project) C FROM work ) GROUP BY name,surname,project

Эта работа. Но мне нужно динамически SQL-запрос, потому что количество строк может быть переменной. Является ли это возможным ? Спасибо

1 Ответ

0 голосов
/ 16 марта 2011

Вы можете генерировать sql динамически. Посмотрите в пакет DBMS_SQL. Но в каждой строке должно быть одинаковое количество столбцов.

Другой способ сделать это - вернуть вложенную таблицу или переменную дат и часов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...