powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Использовать результат динамического запроса хранимой процедуры в запросе или VIEW
2 сообщений из 27, страница 2 из 2
Использовать результат динамического запроса хранимой процедуры в запросе или VIEW
    #39709837
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как вариант - преобразуйте в функцию, возвращающую XML.
И, соответственно, потом парсите этот xml в CTE, ну и вяжитесь с этой CTE.
...
Рейтинг: 0 / 0
Использовать результат динамического запроса хранимой процедуры в запросе или VIEW
    #39709856
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4d_monsterПолучается есть только два варианта:
1. создавать временные таблицы
2. использовать динамический текст запроса.
Если есть линкованый сервер к Акцессу, то можно обойтись без динамики, - использовать Акс-вский TRANSFORM, но таблицы в запросе будут серверные
типа такого
Код: sql
1.
2.
3.
4.
5.
6.
7.
select * from openquery ([ACCESS],'
TRANSFORM Sum(t.val) AS [Sum-val]
SELECT t.id
FROM [ODBC;DRIVER=SQL Server;SERVER=(local);Trusted_Connection=Yes;DATABASE=tempdb].t
GROUP BY t.id
PIVOT t.y
')


... или даже без линк.сервера, через OPENROWSET
Главное что бы был установленный провайдер, и где-то на сервере "валялся" файл Акса.
Код: sql
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.
use tempdb
go

create table t (y int, id int, val int)
go

insert into t 
select 2012, 1, 10 union all
select 2012, 1, 10 union all
select 2012, 1, 10 union all
select 2013, 1, 10 union all
select 2013, 1, 10 union all
select 2013, 2, 10
go


select *
   FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
      'C:\test.mdb';
      'admin';'',
'
TRANSFORM Sum(t.val) AS [Sum-val]
SELECT t.id
FROM [ODBC;DRIVER=SQL Server;SERVER=(local);Trusted_Connection=Yes;DATABASE=tempdb].t
GROUP BY t.id
PIVOT t.y
'
);
go

insert into t 
select 2014, 1, 10 union all
select 2014, 1, 10 union all
select 2015, 1, 10 union all
select 2016, 1, 10 union all
select 2017, 1, 10 union all
select 2018, 2, 10

go

select *
   FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
      'C:\test.mdb';
      'admin';'',
'
TRANSFORM Sum(t.val) AS [Sum-val]
SELECT t.id
FROM [ODBC;DRIVER=SQL Server;SERVER=(local);Trusted_Connection=Yes;DATABASE=tempdb].t
GROUP BY t.id
PIVOT t.y
'
);
go

drop table t


Но, в любом случае, создать VIEW на этом запросе не выйдет.
Точнее, создать - можно, и она даже "поработает" немного :) - ровно до того момента, когда набор полей, возвращаемый вью, будет тот же, что при создании, а потом - "поломается" :)
...
Рейтинг: 0 / 0
2 сообщений из 27, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Использовать результат динамического запроса хранимой процедуры в запросе или VIEW
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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