【问题标题】:Get Multiple Select Query Value as a Table以表格形式获取多选查询值
【发布时间】:2018-09-04 15:25:55
【问题描述】:
我正在使用一个存储过程,其中我使用了多个 select 语句,但是这些语句将值作为多个结果集返回,但我希望在单个结果集中返回值。
这是我的程序:
Create Proc GetRequestDetail
As
Begin
Select Count(ReceiverId) As GetInvitation
From Requests
Where ReceiverId = 1044
Select Count(SenderId) As GetSendInvitation
From Requests
Where SenderId = 10
Select Count(ID) As GetAcceptedRequest
From Requests
Where ReceiverId = 7 And Status = 2735
Select Count(ID) As GetRejectedRequest
From Requests
Where ReceiverId = 2182 And Status = 2736
Select Count(ID) As GetAcceptRequest
From Requests
Where SenderId = 10 And status = 1255
Select Count(ID) As GetrejectRequest
From Requests
Where SenderId = 10 And status = 1256
end
【问题讨论】:
标签:
tsql
stored-procedures
sql-server-2014
【解决方案1】:
如果所有结果都需要在同一行:
ALTER PROCEDURE GetRequestDetail
as
begin
SELECT
GetInvitation = (Select Count(ReceiverId) from Requests Where ReceiverId = 1044 ),
GetSendInvitation = (Select Count(SenderId) from Requests Where SenderId = 10),
GetAcceptedRequest = (Select Count(ID) from Requests where ReceiverId = 7 and Status = 2735),
GetRejectedRequest = (Select Count(ID) as GetRejectedRequest from Requests where ReceiverId = 2182 and Status = 2736),
GetAcceptRequest = (Select Count(ID) as GetAcceptRequest from Requests where SenderId = 10 and status = 1255),
GetrejectRequest = (Select Count(ID) as GetrejectRequest from Requests where SenderId = 10 and status = 1256)
end
附带说明,您似乎缺少 SP 的参数(可能接收搜索到的 ID 作为参数?)。可能类似于以下内容:
ALTER PROCEDURE GetRequestDetail
@ReceivedID INT,
@SenderID INT
as
begin
SELECT
GetInvitation = (Select Count(ReceiverId) from Requests Where ReceiverId = @ReceivedID ),
GetSendInvitation = (Select Count(SenderId) from Requests Where SenderId = @SenderID),
GetAcceptedRequest = (Select Count(ID) from Requests where ReceiverId = @ReceivedID and Status = 2735),
GetRejectedRequest = (Select Count(ID) as GetRejectedRequest from Requests where ReceiverId = @ReceivedID and Status = 2736),
GetAcceptRequest = (Select Count(ID) as GetAcceptRequest from Requests where SenderId = @SenderID and status = 1255),
GetrejectRequest = (Select Count(ID) as GetrejectRequest from Requests where SenderId = @SenderID and status = 1256)
end