Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Запрос из таблицы с историческими значениями / 12 сообщений из 12, страница 1 из 1
16.03.2009, 19:08
    #35872499
Полковник Трофимов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из таблицы с историческими значениями
Вопрос в клубе знатоков!

Данные (как бы история. в марте было а, в июне стало б...):
Код: plaintext
select  3  as month, 'a' as val union select  6 , 'b' union select  11 , 'a'

Что нужно получить:
month val3 a4 a5 a6 b7 b8 b9 b10 b11 a12 a

версия бд: ASA 7
...
Рейтинг: 0 / 0
16.03.2009, 19:47
    #35872567
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из таблицы с историческими значениями
Полковник Трофимов пишет:

> select *3* as month, 'a' as val union select *6*, 'b' union select *11*, 'a'

> Что нужно получить:
> month val
> 3 a
> 4 a
> 5 a
> 6 b
> 7 b
> 8 b
> 9 b
> 10 b
> 11 a
> 12 a

Это невозможно получить на SQL.
SQL не умеет генерировать записи ниоткуда.
Вам придётся завести для этого таблицу с записью для каждого месяца,
или каждого месяца каждого года, или ещё для чего у вас там это нужно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
16.03.2009, 22:46
    #35872789
rcryo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из таблицы с историческими значениями
добавьте к вашему селекту
Код: plaintext
from dummy
...
Рейтинг: 0 / 0
16.03.2009, 23:15
    #35872816
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из таблицы с историческими значениями
rcryoдобавьте к вашему селекту
Код: plaintext
from dummy


Паржал, спасиба
...
Рейтинг: 0 / 0
17.03.2009, 11:51
    #35873551
Yurk0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из таблицы с историческими значениями
Полковник Трофимов,

Ну... как то так:
автор(select top 1 month,val FROM "DBA"."TEST" order by month)
union
(SELECT a.month,a.val FROM "DBA"."TEST" as a join "DBA"."TEST" as b on a.month = b.month + 1 and a.val <> b.val)
...
Рейтинг: 0 / 0
17.03.2009, 11:54
    #35873561
Yurk0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из таблицы с историческими значениями
ой)).. я неправильно понял вопрос...
...
Рейтинг: 0 / 0
17.03.2009, 14:59
    #35874229
iLLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из таблицы с историческими значениями
Есть замечательная функция dbo.rowgenerator, она понаделает записей. С использованием перемножения таблиц и условия where можно получить нужное кол-во строк.

Теперь по поводу сути вопроса. Такую выборку нужно делать при помощи ХП. Внутри временная табличка, курсор, внутри курсора добавление нужного кол-ва записей в времянку. И возврат полученной таблицы.
...
Рейтинг: 0 / 0
17.03.2009, 16:36
    #35874645
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из таблицы с историческими значениями
MasterZivЭто невозможно получить на SQL.Правда? :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select row_num as month, 'a' as val
from RowGenerator
where row_num>= 3  and row_num<= 6 
union
select row_num as month, 'b' as val
from RowGenerator
where row_num>= 6  and row_num<= 11 
union
select row_num as month, 'a' as val
from RowGenerator
where row_num>= 11  and row_num<= 12 
order by month
Или еще короче:
Код: plaintext
1.
2.
3.
select row_num as month, (if row_num between  6  and  10  then 'b' else 'a' endif) as val
from RowGenerator
where row_num>= 3  and row_num<= 12 
order by month
...
Рейтинг: 0 / 0
17.03.2009, 17:00
    #35874777
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из таблицы с историческими значениями
Ну.. а если месяцы, за которые есть данные заранее не известны (а на практике так и будет), то все-равно писать ХП.
...
Рейтинг: 0 / 0
17.03.2009, 17:30
    #35874881
Сергей08
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из таблицы с историческими значениями
ну если...
вообше то...
то MasterZiv прав
это уже не SQL
...
Рейтинг: 0 / 0
17.03.2009, 21:16
    #35875284
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из таблицы с историческими значениями
Сергей08ну если...
вообше то...
то MasterZiv прав
это уже не SQLПочему это вдруг не SQL? Самый настоящий SQL причем даже без расширений WatcomSQL.
Вот второй пример, с if в колонке, это уже действительно WatcomSQL будет.
Другое дело что волшебная таблица RowGenerator есть не во всех базах данных, но в SA она есть. А Полковник Трофимов именно про нее спрашивал.
...
Рейтинг: 0 / 0
18.03.2009, 11:49
    #35876152
Сергей08
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос из таблицы с историческими значениями
Я хотел сказать, что фраза:
Код: plaintext
SQL не умеет генерировать записи ниоткуда.
есть очень правильная фраза и гораздо проще сказать
в каких базах данных есть 'волшебная таблица RowGenerator '
Особенно если откинуть последние версии
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Запрос из таблицы с историческими значениями / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]