Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите составить запрос, Oracle 6 
V
    Опции темы
Kbl4AH
Дата 9.2.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 1
Всего: 15



Здравствуйте. Нужна Ваша помощь.
Есть таблица вида:
--------------------------------------------------------
| дата     | человек  | локация  | значение |
--------------------------------------------------------
01.01.09 | Вася        | Европа    | 05             |
02.01.09 | Вася        | Европа    | 10             |
01.01.09 | Вася        | Африка   | 15             |
01.01.09 | Коля        | Африка   | 20             |
01.01.09 | Саша      | Европа    | 25             |
01.02.09 | Петя       | Америка  | 30             |
--------------------------------------------------------


Нужно сделать запрос, возвращающий данные в виде:
Поля
---------------------------------------------------------
Локация | Вася | Коля | Петя | Саша | Дата |
---------------------------------------------------------

Данные
Африка   | 15    | 20    | -        | -         |01.09 |
Европа    | 15    | -       | -        | 25      |01.09 |

То есть в полях всегда полный список человеков (список людей постоянный), а в поле 'локация' только те локации, которые есть для данного месяца...
В ячейках соответственно суммы...
Подскажите, плиз, буду очень благодарен.

Это сообщение отредактировал(а) Kbl4AH - 9.2.2009, 15:17
PM MAIL ICQ   Вверх
Kbl4AH
Дата 9.2.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 1
Всего: 15



В принципе, для частного случая запрос придумал:
Код

select locaciya, 
sum(decode(chelovek, 'Вася', znachenie, null)) 'Вася', 
sum(decode(chelovek, 'Коля', znachenie, null)) 'Коля', 
sum(decode(chelovek, 'Петя', znachenie, null)) 'Петя', 
sum(decode(chelovek, 'Саша', znachenie, null)) 'Саша' 
from table 
where trunc(data, 'mm') = trunc(:Data, 'mm') 
group by locaciya

Только все-равно как-то криво, ведь список людей может быть больше...
Есть другие варианты?

Это сообщение отредактировал(а) Kbl4AH - 9.2.2009, 15:45
PM MAIL ICQ   Вверх
Zloxa
Дата 9.2.2009, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Kbl4AH @  9.2.2009,  15:06 Найти цитируемый пост)
список людей постоянный

Код

select 
   "Локация"
   ,sum(decode("человек",'Вася',"значение")) "Вася"
   ,sum(decode("человек",'Коля',"значение")) "Коля"
   ,sum(decode("человек",'Петя',"значение")) "Петя"
   ,sum(decode("человек",'Саша',"значение")) "Саша"
   ,"Дата"
from "таблица_вида"
group by "Локация","Дата"

Уверены что oracle 6? Такая древность?
Может чего то из использованного мной в этом запросе нет в шестерке.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Kbl4AH
Дата 9.2.2009, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 1
Всего: 15



Цитата(Zloxa @  9.2.2009,  15:46 Найти цитируемый пост)
Уверены что oracle 6? Такая древность?

Сам с ним мучаюсь, даже join'ов нормальных нет, приходицца через (+) делать... а с ними хуже...
Правда это пока единственный для меня минус...

Добавлено через 1 минуту и 24 секунды
Блин, вот всегда у меня так - в начале спрошу, а потом подумаю:(
Спасибо, Zloxa.
PM MAIL ICQ   Вверх
Zloxa
Дата 9.2.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Kbl4AH @  9.2.2009,  15:42 Найти цитируемый пост)
Есть другие варианты?

Исходя из того, что список столбцов в  выражении select всегда строго определен и не зависит от состава данных, "другие варианты" сводятся к динамическому формированию подобного запроса.

Только в 11м оракле, говорят, появился pivot для операций с XML.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.