2014-10-07 81 views
0

创建存储过程我是很新的创建存储过程,我需要知道这甚至有可能。查询返回一个开始日期的结果,说明一个星期前(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是)和长度(其中-7是)。请记住,表中唯一一个是T.postdate。我看到一些例子如下所示:

EXECUTE HumanResources.uspGetEmployeesTest2 @FirstName = N'Pilar', @LastName = N'Ackerman'; 

而这就是我希望用户能够输入他们想要的值的地方。我知道我可以在C#中这样做,但我只是想知道,如果这是在SQL Server Management Studio中

+1

你在问Google之前试过谷歌吗? http://msdn.microsoft.com/en-gb/library/ms345415.aspx – Tanner 2014-10-07 15:03:07

+0

显然,你没有作为你的样品是从该网页。 **的第3步创建的查询编辑器**一个过程显示了如何创建一个存储过程。 – Tanner 2014-10-07 15:04:12

回答

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 
+0

除了那些围绕百分比的圆括号之外,我还有其他的东西..谢谢你 – user3825831 2014-10-07 15:33:35