Sql server 返回选定值的存储过程

Sql server 返回选定值的存储过程,sql-server,stored-procedures,Sql Server,Stored Procedures,我在一个数据库中有两个表。一个是组表,另一个是状态表。两者都有相同的GroupId。所以我会加入他们,我会得到所有的记录。Status表在表中有Status列,该Status列有6个值,如 1) active 2) not active 3) pending 4) approved 5) placed 6) unplaced 现在,所有记录都有一列与状态列相关 我需要一个存储过程来获取记录,比如如果它处于活动状态,我们将在内部连接两个表时获取记录,如果它处于放置状态,我们将获取放置

我在一个数据库中有两个表。一个是
表,另一个是
状态
表。两者都有相同的GroupId。所以我会加入他们,我会得到所有的记录。Status表在表中有Status列,该Status列有6个值,如

1)  active
2)  not active
3)  pending
4)  approved
5)  placed
6)  unplaced
现在,所有记录都有一列与状态列相关

我需要一个存储过程来获取记录,比如如果它处于活动状态,我们将在内部连接两个表时获取记录,如果它处于放置状态,我们将获取放置的列记录,等等,如果用户不选择任何内容,我们将获取所有记录。我将绑定到下拉列表,这些值将显示在前端的gridview中

这是我的代码:

create procedure Sp_SelectedStatus 
@Status varchar(20) as 
Begin 
if(@Status = 'Active') 
    Begin 
    Select A.GroupName , B.Brand , B.Model , 
           B.SerialNo , B.Status , B.AddedOn 
    from GroupDetails as A 
    inner join DeviceDetails as B 
    on A.GroupId = B.GroupId 
    where Status = 'Active' 
    End
End

根据提供的信息,这可能是一个可能的存储过程。“如果用户不选择任何内容,我们将获取所有记录”-将@Status变量默认为null,这使其成为可选的,然后查询将返回所有记录

create procedure dbo.usp_GetStatus 
    @Status varchar(20) = null 
AS 

SET NOCOUNT ON;

Select G.GroupName, D.Brand, D.Model, D.SerialNo, D.[Status], D.AddedOn 
from GroupDetails as G inner join 
    DeviceDetails as D on G.GroupId = D.GroupId 
where D.Status = IsNull(@Status, D.Status);

两件事。将表格格式的表格模式和所需结果添加到问题中可以节省大量的键入工作。另外,请显示您尝试过的内容。--如果状态=活动,请从状态b中选择a.GroupName、b.Brand、b.model、b.serialno、b.status,然后在a.GroupId=b.GroupId上内部加入组a,其中状态='Active'我正在尝试,如果存在,请显示其他否。您编写过SQL吗?甚至
从表中选择*
?请将创建过程Sp_SelectedStatus@Status varchar(20)作为Begin if(@Status='Active')开始选择A.GroupName、B.Brand、B.Model、B.SerialNo、B.Status、,B.AddedOn from GroupDetails作为内部连接设备详细说明为A.GroupId=B.GroupId上的B,其中Status='Active'结束