powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Что гуру все вымерли?
11 сообщений из 11, страница 1 из 1
Что гуру все вымерли?
    #32052235
Nick_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sp_CrossTab
у меня проблема @oncols идет в типе smalldatetime, получается много значений
как в эту процедуру ввести диапазон дат и ковертнуть в 104 styl и еще если можно скажите сколько значений можно присвоить столбцам
...
Рейтинг: 0 / 0
Что гуру все вымерли?
    #32052241
Фотография Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты, мил человек, как положено бы зашел, поздоровался, рассказал о своем горе, объяснил, что это за процедура sp_CrossTab, привел бы ее код, исходные данные в таблицах. Тогда бы мы всем миром наверное и помогли твоему горю. А до тех пор, пока ты не научишься формулировать вопросы, все поднятые тобой проблемы, так и останутся твоими проблемами.

-- Слон
...
Рейтинг: 0 / 0
Что гуру все вымерли?
    #32052242
Кошкинсон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Та ни, НиКу_Ку, ще не все гуру вмэрли. Я те так скажу. Значить, шоби вам зделать запрос, необходимо два ID, а вже потом в зависимости от того, шо ви хотите получить у результатэ, вам будет сделать это легко. Скажу от себя больше: офигенно легко. Ну мабуть понадобятся три ID. Альбо чатыри. Ну гдэ-то пят, не больше.
...
Рейтинг: 0 / 0
Что гуру все вымерли?
    #32052244
Кошкинсон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
/topic/12839 от 2002-09-22 23:33. \r
Ето шоби было понятн, за шо мы туть с Никуку перетираем.
...
Рейтинг: 0 / 0
Что гуру все вымерли?
    #32052246
Nick_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
процедура
CREATE PROC sp_CrossTab
@table AS sysname, -- Table to crosstab
@onrows AS nvarchar(128), -- Grouping key values (on rows)
@onrowsalias AS sysname = NULL, -- Alias for grouping column
@oncols AS nvarchar(128), -- Destination columns (on columns)
@sumcol AS sysname = NULL -- Data cells
AS
set nocount on
DECLARE
@sql AS varchar(8000),
@NEWLINE AS char(1)

SET @NEWLINE = CHAR(10)

-- ШАГ 1: начало строки SQL
SET @sql =
"SELECT " + @NEWLINE +
" " + @onrows +
CASE
WHEN @onrowsalias IS NOT NULL THEN " AS " + @onrowsalias
ELSE ""
END

CREATE TABLE #keys(keyvalue nvarchar(100) NOT NULL PRIMARY KEY)

DECLARE @keyssql AS varchar(1000)
SET @keyssql =
"INSERT INTO #keys " +
"SELECT DISTINCT CAST(" + @oncols + " AS nvarchar(100)) " +
"FROM " + @table

EXEC (@keyssql)

DECLARE @key AS nvarchar(100)
SELECT @key = MIN(keyvalue) FROM #keys

WHILE @key IS NOT NULL
BEGIN
SET @sql = @sql + "," + @NEWLINE +
" SUM(CASE CAST(" + @oncols +
" AS nvarchar(100))" + @NEWLINE +
" WHEN """ + @key +
""" THEN " + CASE
WHEN @sumcol IS NULL THEN "1"
ELSE @sumcol
END + @NEWLINE +
" ELSE 0" + @NEWLINE +
" END) AS [" + @key + "]"

SELECT @key = MIN(keyvalue) FROM #keys
WHERE keyvalue > @key
END
SET @sql = @sql + @NEWLINE +
"FROM " + @table + @NEWLINE +
"GROUP BY " + @onrows + @NEWLINE +
"ORDER BY " + @onrows

PRINT @sql + @NEWLINE -- For debug
exec (@sql)
понятно, что при вызове процедуры можно конвертировать в 104 стиль, но доходя до 122 строки почему-то пишет 170 и 150 ошибки
...
Рейтинг: 0 / 0
Что гуру все вымерли?
    #32052247
Nick_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Слон и прости, что не поздоровался!!!!!!!!!!! :-)
...
Рейтинг: 0 / 0
Что гуру все вымерли?
    #32052248
Nick_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кошкинсон тебе во всяком случае придется эти ID сделать для идентификации а потом можешь цепляться за них или курсором или updat-ом
...
Рейтинг: 0 / 0
Что гуру все вымерли?
    #32052250
Nick_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну что слон поможешь?
...
Рейтинг: 0 / 0
Что гуру все вымерли?
    #32052251
Фотография Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, не совсем осталось понятно, а что же оно делать должно? И как, например, ее вызвать для пробы?

-- Слон
...
Рейтинг: 0 / 0
Что гуру все вымерли?
    #32052256
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы не думали над тем, что может быть 8000 байтов может не хватить для всего динамического запроса ?
Потому как для базы pubs все работает

Код: plaintext
1.
2.
3.
use pubs
go
exec sp_crosstab 'sales', 'CONVERT(char(10), ord_date, 104)', 'xx', 'stor_id', 'qty'
go


И уже в этом примере с 10 разными датами длина динамического запроса 1318 байт. А у вас их больше 122, так ведь ?
...
Рейтинг: 0 / 0
Что гуру все вымерли?
    #32052424
Nick_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Glory
попробую
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Что гуру все вымерли?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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