Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Шахматка 2000 [MSSQL]


KAA ©   (2002-03-27 17:48:00) 

Необходимо сделать шахматку, в частности получить либо выборку, либо временную таблицу, в которой кол-во столбцов будет зависеть от результата отдельной выборки, вообщем произвольное количество.
С помошью чего это можно сделать на MSSQL 2000? Задача вроде распространенная, наверняка уже есть стандартные наработки.


Delirium   (2002-03-29 12:56:00) [1]

А вот и что почитать: http://www.olap.ru/basic/OLAP_intro1.asp


Delirium   (2002-03-29 12:50:00) [2]

То, что вы пытаетесь сделать наpывается OLAP. Применительно к MSSQL2000 - Analysis Services. Сие есть весьма сложная и интересная штуковина - читайте, изучайте и уже через пару недель задачи типа "шахматки" покажутся смешными.


KAA   (2002-03-29 11:29:00) [3]

Кстати вопрос, а как заолнить новый столбец таблицы результатаи выборки из другой таблицы?


KAA   (2002-03-28 12:12:00) [4]

Этот вариант ничего не добавляет, хотя выводит что @S равно 2.

DECLARE @FETCH_STATUS int

CREATE TABLE #Tmp(
naim varchar(50),
fil1 int)

DECLARE @S VARCHAR(255)
DECLARE C CURSOR LOCAL FOR
SELECT convert(varchar(255),UIDTheme)
FROM bind_job_theme
WHERE UIDJob=12
OPEN C
FETCH NEXT FROM C INTO @S
WHILE @FETCH_STATUS=0
BEGIN
EXEC("ALTER TABLE #Tmp ADD ["+@S+"] int")
FETCH NEXT FROM C INTO @S
END
CLOSE C

print @S

SELECT * FROM #Tmp

DROP TABLE #Tmp


А этот вариант отрабатывает

CREATE TABLE #Tmp(
naim varchar(50),
fil1 int,
)

DECLARE @S VARCHAR(255)

SET @S="2"

EXEC("ALTER TABLE #Tmp ADD ["+@S+"] int")

SELECT * FROM #Tmp

DROP TABLE #Tmp

Я еще не работал с курсорами. Где могут быть грабли?


Fay   (2002-03-27 18:07:00) [5]

В ALTER TABLE... славно было бы ещё тип данных добавить
Любят тут до таких мелочей всяко-разно ...


Fay   (2002-03-27 18:05:00) [6]

CREATE TABLE #Tmp(
[поле1] <его_тип_какойто>,
[поле2] <его_тип_какойто>,
)
Чё-то типа этого должно сработать
(Именно этод код не гонял)

DECLARE @S VARCHAR(n)
DECLARE C CURSOR LOCAL FOR
SELECT [какое-то поле откуда поля брать будешь]
FROM [какая-то таблица где это поле :)]
OPEN C
FETCH NEXT FROM C INTO @S
WHILE @FETCH_STATUS=0
BEGIN
EXEC("ALTER TABLE #Tmp ADD ["+@S+"]")
FETCH NEXT FROM C INTO @S
END
CLOSE C


Наверх

Титульная страница Поиск, карта сайта Написать письмо