Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ламерский вопрос по СОХ.ПРОЦЕДУРЕ / 5 сообщений из 5, страница 1 из 1
19.03.2004, 18:42
    #32449967
Andrew12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ламерский вопрос по СОХ.ПРОЦЕДУРЕ
Есть следующая процедура :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
CREATE PROCEDURE sp_CrossTab1
  @table       AS sysname, -- Таблица для построения crosstab отчета
 
  @onrows      AS nvarchar( 128 ), -- Значение для группировки по строкам
 
  @onrowsalias AS sysname = NULL, -- Псевдоним для группируемой колонки
 
  @oncols      AS nvarchar( 128 ), -- Значение для группировки по колонкам
 
  @sumcol      AS sysname = NULL  -- Значение для суммирования
 
AS
SET NOCOUNT ON
DECLARE
  @sql AS varchar( 8000 ),
  @NEWLINE AS char( 1 )

SET @NEWLINE = CHAR( 10 )

 -- Шаг 1: начало строки SQL.
 
Set @table = 'хЦены'
Set @onrows = 'id_грпцен'
Set @onrowsalias = 'id_грпцен'
Set @oncols = 'id_партн'
Set @sumcol = 'num'

SET @sql =
  'SELECT' + @NEWLINE +
  '  ' + @onrows +
  CASE
    WHEN @onrowsalias IS NOT NULL THEN ' AS ' + @onrowsalias
    ELSE ''
  END

 -- Шаг 2: Хранение ключей во временной таблице.
 
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)

 -- Шаг 3: Средняя часть строки SQL.
 
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 N''' + @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

 -- Шаг 4: Конец строки SQL.
 
SET @sql = @sql         + @NEWLINE +
  'FROM ' + @table      + @NEWLINE +
  'GROUP BY ' + @onrows + @NEWLINE +
  'ORDER BY ' + @onrows

SET NOCOUNT OFF
PRINT @sql  + @NEWLINE -- для отладки
 
Exec (@sql)

GO


Как можно увидеть ее результаты???
...
Рейтинг: 0 / 0
19.03.2004, 19:47
    #32450015
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ламерский вопрос по СОХ.ПРОЦЕДУРЕ
Запусти и увидишь.
...
Рейтинг: 0 / 0
19.03.2004, 23:25
    #32450076
Andrew12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ламерский вопрос по СОХ.ПРОЦЕДУРЕ
Создаю я такую сохраненную процедуру, запускаю ее, ввожу параметры ... И ... вижу надпись : Сохраненная процедура выполнена успешно, но ни одной записи не возвращено. А я хочу увидеть сводную таблицу.

Говорят, что можно воспользоваться следующим кодом :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
EXEC sp_CrossTab
  @table       = '#crosstab',
  @onrows      = 'ClientID,MONTH(Date)',
  @onrowsalias = 'SaleMonth',
  @oncols      = 'YEAR(Date)',
  @sumcol      = 'Amount',
  @kind        =  3 ,
  @total       =  1 ,
  @null        = 'null'


НО! Где это нужно писать?? Объясните, пожалуйста, если можете... Как сделать, чтоб процедура вернула результаты запроса????
...
Рейтинг: 0 / 0
22.03.2004, 06:35
    #32450709
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ламерский вопрос по СОХ.ПРОЦЕДУРЕ
Есть такая штука - Query Analyzer - идет в составе клиентской части MSSQL (isqlw.exe). Вот в нем и запусти. А из аксеса не работает скорей всего потому, что запрос помимо результирующего набора возвращает еще какое-то предупреждение (скорее всего Warning связанный с группировкой). Отследи что за сообщение выскакивает, и запости его сюда.
...
Рейтинг: 0 / 0
22.03.2004, 11:26
    #32451035
Andrew12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ламерский вопрос по СОХ.ПРОЦЕДУРЕ
Спасибо, что откликнулся. Из-за нехватки времени уже сам разобрался...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ламерский вопрос по СОХ.ПРОЦЕДУРЕ / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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