powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Хранимые процедуры - нужна помощь
5 сообщений из 5, страница 1 из 1
Хранимые процедуры - нужна помощь
    #32295308
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Помогите написать хр.процедуру:
из таблицы tab1 надо взять столбец
из таблицы tab2 нужна строка
Спасибо.
...
Рейтинг: 0 / 0
Хранимые процедуры - нужна помощь
    #32295408
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А потом, видимо, положить это все в ячейкуТаб3 :))
...
Рейтинг: 0 / 0
Хранимые процедуры - нужна помощь
    #32295422
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе это перекрестный запрос, но я этим не занимался.
...
Рейтинг: 0 / 0
Хранимые процедуры - нужна помощь
    #32295740
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
CREATE PROC sp_CrossTab
  @table 	AS sysname,       		 -- Таблица для перекрёстного запроса
 
  @onrows 	AS nvarchar( 128 ),  		 -- Группировка по строкам (значения будут в строках)
 
  @onrowsalias 	AS sysname = NULL, 		 -- Алиас для группировочного столбца
 
  @oncols 	AS nvarchar( 128 ),  		 -- Группировка по столбцам
 
  @sumcol 	AS sysname = NULL  		 -- Данные
 
AS

DECLARE
  @sql AS varchar( 8000 ),
  @NEWLINE AS char( 1 )

SET @NEWLINE = CHAR( 10 )
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 N''' + @key +
           ''' THEN ' + CASE
                          WHEN @sumcol IS NULL THEN '1'
                          ELSE @sumcol
                        END + @NEWLINE +
    '        ELSE 0'                      + @NEWLINE +
    '      END) AS c' + @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)
GO


Вот код универсальной хранимой для кросс табов....
...
Рейтинг: 0 / 0
Хранимые процедуры - нужна помощь
    #32296522
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, попробую разобраться.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Хранимые процедуры - нужна помощь
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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