powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ламерский вопрос по СОХ.ПРОЦЕДУРЕ
5 сообщений из 5, страница 1 из 1
Ламерский вопрос по СОХ.ПРОЦЕДУРЕ
    #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
Ламерский вопрос по СОХ.ПРОЦЕДУРЕ
    #32450015
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запусти и увидишь.
...
Рейтинг: 0 / 0
Ламерский вопрос по СОХ.ПРОЦЕДУРЕ
    #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
Ламерский вопрос по СОХ.ПРОЦЕДУРЕ
    #32450709
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая штука - Query Analyzer - идет в составе клиентской части MSSQL (isqlw.exe). Вот в нем и запусти. А из аксеса не работает скорей всего потому, что запрос помимо результирующего набора возвращает еще какое-то предупреждение (скорее всего Warning связанный с группировкой). Отследи что за сообщение выскакивает, и запости его сюда.
...
Рейтинг: 0 / 0
Ламерский вопрос по СОХ.ПРОЦЕДУРЕ
    #32451035
Andrew12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, что откликнулся. Из-за нехватки времени уже сам разобрался...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ламерский вопрос по СОХ.ПРОЦЕДУРЕ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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