Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / помогите !! / 11 сообщений из 11, страница 1 из 1
26.08.2002, 13:45:45
    #32045873
Tosha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите !!
Есть таблица вида :
дата1 кол. товар1
дата1 кол. товар2
.
.
дата1 кол. товар40
.
.
датаN кол. товар1
датаN кол. товар2
.
.
датаN кол. товар40

надо перекинуть это в таблицу где столбцами будут товары в сторах соответствующие количества за каждую дату. Примерно так:

дата товар1.............товар 40
------------------------------
дата1 кол................кол.
дата2 кол.................кол.


Запуталась напрочь :( Помогите!
...
Рейтинг: 0 / 0
26.08.2002, 13:48:51
    #32045876
Alexandr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите !!
Количество товаров всегда 40? Или оно динамическое?
...
Рейтинг: 0 / 0
26.08.2002, 14:41:36
    #32045882
Alexandr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите !!
Вот можно попробовать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare
@iD_Tov int,
@date datetime

set @date=начальная_дата
while @date<=конечная_дата
begin
	WHILE @iD_Tov<= 40 
	begin
		exec 'insert into новая_таблица (дата,поле_товар' + cast(@iD_Tov as varchar( 2 )) +') select
		дата,товар  where товар like ''товар' + cast(@iD_Tov as varchar( 2 )) +''' and дата=' + @date
	end
set @date=DATEADD ( day,  1 , @date ) 
end

...
Рейтинг: 0 / 0
26.08.2002, 14:42:49
    #32045883
Makc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите !!
http://www.sqlteam.com/item.asp?ItemID=2955
...
Рейтинг: 0 / 0
26.08.2002, 17:41:09
    #32045943
Tosha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите !!
Alexandr
количество товаров меняется но медленно. Проблема в том что выглядит это не как товар1, товар2 а "название первого товара", "название второго"
мло того, там и дата в текстовом виде.

Makc
Это круто. Жаль только что мой английский не дает полностью оценить :(
Мне б чего попроще. с примерами...
...
Рейтинг: 0 / 0
26.08.2002, 18:10:36
    #32045949
Makc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите !!
2 Tosha:
Да на самом деле все просто...
Вам нужен перекрестный запрос (в терминах Access'a),
т.е. в колонках - данные из таблицы, в столбцах - некие сводные данные...
Посмотрите help по Access'у поймете о чем речь...
В SQL сервере не все так просто, выход один - составлять запрос динамически или делать все через временные таблицы и курсоры, предложеный мной вариант позволяет Вам это сделать с минимальными трудозатратами...

Вызываете хранимую процедуру, параметры:
@select varchar(8000) - собственно запрос
@sumfunc varchar(100) - агрегатная функция
@pivot varchar(100), - поле по которому будут выб-ря pivot значения
@table varchar(100) - таблица откуда выб-ря pivot'ы

В Вашем случае:
(структура я полагаю такая:
товары - items
id
name
движения по товарам - sales
id
date
count
item_id
)
@select='select date from sales inner join items on
sales.item_id=items.id group by date'
@sumfunc='sum(count)'
@pivot='name'
@table='sales'

Желаею успехов!!!
ЗЫ. А Вам сколько лет?
...
Рейтинг: 0 / 0
27.08.2002, 09:20:44
    #32046027
Alexandr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите !!
2 Tosha
Ну как справилась? Если проблеммы - пришли скрипт таблиц - помогу.
...
Рейтинг: 0 / 0
27.08.2002, 10:49:30
    #32046056
Nickolay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите !!
попробуй пойти в BOL и почитать про pivot table. Мне кажется это как раз то, о чем ты спрашивал (и с примерами :))
...
Рейтинг: 0 / 0
27.08.2002, 11:12:02
    #32046072
Makc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите !!
2 Nickolay:
BOL дает определение Pivot table, но не дает способа построения запросов...
Я думаю ты согласишся, что примеры построения запросов, приведенные в BOL не более чем демонстрация определения cross-tab report и использовать их в своих программах не получится...

Раньше я решал это так:
выбирал по distinct'у значения из pivot table в курсор, прокручивал его, формируя запрос и исполнял его...
На форуме наткнулся на ссылку
http://www.sqlteam.com/item.asp?ItemID=2955
Это круто!!!
Удобно, универсально и работает немного быстрее.
Рекомендую!!!
...
Рейтинг: 0 / 0
27.08.2002, 16:50:15
    #32046274
Tosha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите !!
Макс,
Спасибо огромное! Все получилось !

Действительно великолепная процедура :))

Спасибо.

ЗЫ. Лет мне много. 10 лет отпахала на ниве защиты от вторжений, а теперь в связи с переменой места работы осваиваю SQL :)
...
Рейтинг: 0 / 0
27.08.2002, 16:52:25
    #32046276
Makc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите !!
Успехов!!!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / помогите !! / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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