powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / View
6 сообщений из 6, страница 1 из 1
View
    #32071132
Ольга_Г
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо создать представление вида :

create view load (napr,prn,prd)
as
select nnapr as napr, 0 as prn,count(*) as prd
from tabl1
where tr_time between '01.09.2002' and '30.09.2002 23:59:59'
group by nnapr
union
select nnapr_rc as napr,count(*) as prn,0 as prd
from tabl1
where rc_time between '01.09.2002' and '30.09.2002 23:59:59'
group by nnapr_rc

Но хотелось бы чтоб значения дат в представлении
не были явно заданы.
Возможно ли в представление передавать значения дат?
...
Рейтинг: 0 / 0
View
    #32071135
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может функции помогут если SQL2K
...
Рейтинг: 0 / 0
View
    #32071145
Фотография tpg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно ли в представление передавать значения дат?

Нет. Для этого необходимо использовать хранимые процедуры. Кстати, ничего в этом сложного нет.
...
Рейтинг: 0 / 0
View
    #32071156
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4tpg : Я бы использовал не SP а UDF :
CREATE TABLE [dbo].[RepDate] (
[D1] [datetime] NULL ,
[D2] [datetime] NULL
) ON [PRIMARY]

go
CREATE FUNCTION fnD1()
RETURNS datetime
AS
begin
declare @A datetime
set @a= (select D1 from [RepDate])
RETURN @a
end

go
CREATE FUNCTION fnD2()
RETURNS datetime
AS
begin
declare @A datetime
set @a= (select top D2 from [RepDate])
RETURN @a
end
GO

Тогда View выглядел бы так :
create view load (napr,prn,prd)
as
select nnapr as napr, 0 as prn,count(*) as prd
from tabl1
where tr_time between dbo.fnD1() and dbo.fnD2()
group by nnapr
union
select nnapr_rc as napr,count(*) as prn,0 as prd
from tabl1
where rc_time between dbo.fnD1() and dbo.fnD2()
group by nnapr_rc

остается только записывать в таблицу RepDate две даты
...
Рейтинг: 0 / 0
View
    #32071168
Фотография tpg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, вот и ещё три объекта появилось: две UDF и табличка, в которую, к тому же, ещё и писать что-то надо.

С ииспользованием SP можно было бы обойтись следующим кодом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE PROCEDURE dbo.[load]
        @BeginDate datetime,
        @EndDate datetime
AS
SET NOCOUNT ON
select nnapr as napr,  0  as prn,count(*) as prd 
from tabl1 
where tr_time between @BeginDate and @EndDate 
group by nnapr 
union 
select nnapr_rc as napr,count(*) as prn, 0  as prd 
from tabl1 
where rc_time between @BeginDate and @EndDate
group by nnapr_rc
GO

И всех делов то.
...
Рейтинг: 0 / 0
View
    #32071251
Фотография Александр Степанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 tpg

Или, если версия SQL2K - одной Table-Valued Function. Преимущество в том, что ее можно напрямую использовать в From, без использования всяких временных таблиц, что потребуется при использовании SP для джойна с другими таблицами. Кстати, в BOL одна из глав так и называется - Rewriting Stored Procedures as Functions :

This topic describes how to determine whether to rewrite existing stored procedure logic as user-defined functions. For example, if you want to invoke a stored procedure directly from a query, repackage the code as a user-defined function.

In general, if the stored procedure returns a (single) result set, define a table-valued function. If the stored procedure computes a scalar value, define a scalar function.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / View
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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