Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
 Дополнительные столбцы  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1207
Доброго всем дня!
Помогите пожалуйста решить такую задачку:
Есть табличка
id fio data_d kol-vo
1 Иванов 15-01-2008 10
1 Иванов 20-01-2008 15
1 Иванов 10-02-2008 20
1 Иванов 25-02-2008 30
1 Иванов 01-03-2008 10
1 Иванов 02-03-2008 10


Необходимо отобразить месяцы, т.е. например мы выбираем отчет по Иванову за каких-то 2 месяца (возьмем первый и второй)
fio Январь Февраль
Иванов 25 50

Месяцы могут быть от 1 и до n
Как такое можно выкрутить?
20 мар 09, 15:58    [6955569]     Ответить | Цитировать Сообщить модератору
 Re: Дополнительные столбцы  [new]
spas2001
Member

Откуда: Тамбов--->Москва-->Тамбов-->Москва-->Тамбов
Сообщений: 2010
Зависит от СУБД соответственно вопрос лучше в конкретном форуме задавать
Для Oracle можно использовать over partition и trunc
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
20 мар 09, 16:14    [6955706]     Ответить | Цитировать Сообщить модератору
 Re: Дополнительные столбцы  [new]
Dim2000
Member

Откуда: Москва
Сообщений: 5318

Imperous пишет:

> Как такое можно выкрутить?

Кросстабом.

Posted via ActualForum NNTP Server 1.4

20 мар 09, 17:03    [6956068]     Ответить | Цитировать Сообщить модератору
 Re: Дополнительные столбцы  [new]
18-я весна
Member

Откуда: Odessa
Сообщений: 203
Дык это ж простейший Crosstab DW.
Только вместо даты в запрос добавить вычисляемое поле "Месяц".

Единственное я не помню как организовать сортировку по горизонтали по возрастанию номера месяца, а не по алфавиту (но точно помню что как-то давным-давно решал это, так что кто-то подскажет)
20 мар 09, 17:05    [6956076]     Ответить | Цитировать Сообщить модератору
 Re: Дополнительные столбцы  [new]
18-я весна
Member

Откуда: Odessa
Сообщений: 203
18-я весна
Единственное я не помню как организовать сортировку по горизонтали по возрастанию номера месяца, а не по алфавиту (но точно помню что как-то давным-давно решал это, так что кто-то подскажет)


Вспомнил.
Надо в запрос кросстаба добавить два выч поля - месяц числовой и месяц текст, а при создании кросстаба в наборе для столбцов указать эти два поля именно в этом порядке. После того как визард сформирует кросстаб - удалить из визуального представления все что связано с числовым месяцем.
Тогда внутренне кросстаб будет сортировать по обоим этим полям, а показывать будет только текстовое.

ЗЫ. И не забудьте что Январь 2008 это не то же самое что январь 2009 :). Т.е. надо всегда работать с парой: год+месяц, иначе месяца из разных годов свернутся в одну столбец.
20 мар 09, 17:37    [6956322]     Ответить | Цитировать Сообщить модератору
 Re: Дополнительные столбцы  [new]
Dim2000
Member

Откуда: Москва
Сообщений: 5318

18-я весна пишет:

> Т.е. надо всегда работать с парой: год+месяц, иначе месяца из разных
> годов свернутся в одну столбец.

А может, так и надо? В постановке задачи о годе ничего нет ;).

Posted via ActualForum NNTP Server 1.4

20 мар 09, 17:44    [6956362]     Ответить | Цитировать Сообщить модератору
 Re: Дополнительные столбцы  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1207
спасиб, буду смотреть
20 мар 09, 18:59    [6956711]     Ответить | Цитировать Сообщить модератору
 Re: Дополнительные столбцы  [new]
18-я весна
Member

Откуда: Odessa
Сообщений: 203
Dim2000

> Т.е. надо всегда работать с парой: год+месяц, иначе месяца из разных
> годов свернутся в одну столбец.

А может, так и надо? В постановке задачи о годе ничего нет ;).

Ну так это до первого запуска юзером за период больше года :)
Или даже короче года, но с переходом между годами - сортировка месяцев будет некорректной.
Так что рекомендую в качестве числогово значения месяца использовать выражение Год*100+Месяц
20 мар 09, 19:49    [6956874]     Ответить | Цитировать Сообщить модератору
 Re: Дополнительные столбцы  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1207
почитал про кросстаб, это то что надо!
теперь столкнулся с такой проблеммой как же сделать такую выборку )))
месяцы и годы разделяются, максимальное нашел, а чтоб еще и отобразить того человека не могу :(
не идет группировка
хеееееелп.
23 мар 09, 15:27    [6964012]     Ответить | Цитировать Сообщить модератору
 Re: Дополнительные столбцы  [new]
18-я весна
Member

Откуда: Odessa
Сообщений: 203
Imperous
почитал про кросстаб, это то что надо!
теперь столкнулся с такой проблеммой как же сделать такую выборку )))
месяцы и годы разделяются, максимальное нашел, а чтоб еще и отобразить того человека не могу :(
не идет группировка
хеееееелп.

для ASA:
select fio
     , kolvo
     , year(data_d) * 100 + month(data_d) as year_month_order
     , year(data_d) || ' ' || monthname(data_d) as year_month_label
  from table
 order by 1, 3
Столбец fio - в строки кросстаба, столбцы year_month_order, year_month_label в столбцы кросстаба, kolvo - в значение кросстаба
23 мар 09, 17:50    [6965102]     Ответить | Цитировать Сообщить модератору
Все форумы / PowerBuilder Ответить