![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Шахматка 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