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

Откуда:
Сообщений: 81
День добрый! У меня стоит база MsAccess+MsSql2000.
Подскажите, пожалуйста, пути реализации следующей задачи:

Есть форма с таблицей :

..............| тов1 | тов2 | ...
абонент1.....n1.......n2
абонент2
...

Числа n1 и n2 вводятся последовательно.
Когда заканчивается строка (когда заканчивается ввод всех абонентов) необходимо введенные данные записать в следующем виде в таблицу:

абонент1 n1
абонент1 n2
...
5 июл 04, 14:56    [784866]     Ответить | Цитировать Сообщить модератору
 Re: Трансформация горизонтального ввода данных в вертикальный  [new]
Berg
Member

Откуда: Кр-ск
Сообщений: 3480
Думается, что серверных средств для этого нема...:-) Если только вы не работаете с временной таблицей, кот. хотите потом транспонировать...
Лучше спросите в формуме по Access, а то что он там умеет кто его знает...

А вообще-то изврат это имхо. Или это начальник хочет видеть все в таком виде и убейся, но сделай?
5 июл 04, 14:59    [784881]     Ответить | Цитировать Сообщить модератору
 Re: Трансформация горизонтального ввода данных в вертикальный  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
select абонент, тов1 as тов
          from таблица
union all
select абонент, тов2 as тов
          from таблица
union all
.
.
.
select абонент, тов-n as тов
          from таблица
5 июл 04, 15:05    [784904]     Ответить | Цитировать Сообщить модератору
 Re: Трансформация горизонтального ввода данных в вертикальный  [new]
Andrew12
Member

Откуда:
Сообщений: 81
Нет, это не изврат, так как при большом количестве возвратов товаров очень экономится время при вводе с корешков, а так-же устраняется путаница.

Гораздо легче вбить по очереди каждый товар, чем выбирать нужный товар и пробивать количество..
5 июл 04, 15:36    [785016]     Ответить | Цитировать Сообщить модератору
 Re: Трансформация горизонтального ввода данных в вертикальный  [new]
Павел Воронцов
Member

Откуда: Новосибирск
Сообщений: 2386
Блог
select абонент, case num when 0 then тов-0
when 1 then тов-1
....
when 1 then тов-n end as тов
          from таблица
inner join (select 0 as num union all select 1 union all ... union all select n) a on 1=1
5 июл 04, 16:06    [785128]     Ответить | Цитировать Сообщить модератору
 Re: Трансформация горизонтального ввода данных в вертикальный  [new]
KOLCHOZ_POSTEVENT
Guest
Не понял я,в чём тут такой большой проблем.
Определить в результирующей табле identity,только последней колонкой,а потом
insert into t_result_table(abonent,N)
select abonent,n1 from t_start_table

insert into t_result_table(abonent,N)
select abonent,n2 from t_start_table
identity потом раскажет кто тут n1 ,а кто n2
5 июл 04, 16:56    [785318]     Ответить | Цитировать Сообщить модератору
 Re: Трансформация горизонтального ввода данных в вертикальный  [new]
Andrew12
Member

Откуда:
Сообщений: 81
to KOLCHOZ_POSTEVENT
Проблемма в том, что столюцы исходной таблицы должны формироваться автоматически, т.е. названия их я не знаю.. Образно говоря - это перекрестный запрос.
5 июл 04, 17:02    [785337]     Ответить | Цитировать Сообщить модератору
 Re: Трансформация горизонтального ввода данных в вертикальный  [new]
KOLCHOZ_POSTEVENT
Guest
Ну не знаешь-не надо,всегда можно вылить в таблу про которую всё знаешь

insert into t_start_table
select * from t1
5 июл 04, 17:15    [785395]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить