我是创建存储过程的新手,我需要知道这是否可行。查询将结果从开始日期返回到前一周(7天),并返回百分比的随机样本(在本例中为.4)。我有这个查询运行并获得所需的结果:
select top .4 percent *
from
(
SELECT DISTINCT T.date,T.job,C.creditType
FROM [dbo].[Trip_Credits] as T
INNER JOIN [dbo].[Credits] as C
ON T.credit=C.code
INNER JOIN [dbo].[Credit_Types] CT
ON CT.Code = C.creditType
AND C.creditType =2
where T.postdate >= DateADD(day, -7, getDate())
) pop order by newID()
我想知道的是,如果我可以创建一个存储过程,用户可以输入百分比值(其中.4是),数据(其中T.postdate是)和length(其中-7是)。请记住,表中唯一的一个是T.postdate。我看到一些例子如下:
EXECUTE HumanResources.uspGetEmployeesTest2 @FirstName = N'Pilar', @LastName = N'Ackerman';
这就是我希望用户能够输入他们想要的值的地方。我知道我可以在C#中做到这一点,但我只是想知道这是否可以在sql server Management Studio中使用
答案 0 :(得分:1)
是的,你可以。它看起来像这样:
CREATE PROCEDURE dbo.your_sp_name
(
@percent DECIMAL (1,1),
@date DATETIME,
@DaysToLookBack INT
)
AS
BEGIN
select top(@percent) percent *
from
(
SELECT DISTINCT T.date,T.job,C.creditType
FROM [dbo].[Trip_Credits] as T
INNER JOIN [dbo].[Credits] as C
ON T.credit=C.code
INNER JOIN [dbo].[Credit_Types] CT
ON CT.Code = C.creditType
AND C.creditType =2
where @date >= DateADD(day, @DaysToLookBack, getDate())
) pop order by newID()
END