Sql server Sql server-存储过程-连接结果
为了编制一份统计报告,我需要为每5000个机构和每5个州执行此类请求,因此25000个请求:Sql server Sql server-存储过程-连接结果,sql-server,stored-procedures,Sql Server,Stored Procedures,为了编制一份统计报告,我需要为每5000个机构和每5个州执行此类请求,因此25000个请求: select count(*) from transaction where state == 1 and where id_agency==1; select avg(duration) from transaction where state == 1 and where id_agency==1; 如何构建一个存储过程,将这些请求的所有结果收集到一个列表键值中 CountAgency1Count
select count(*) from transaction where state == 1 and where id_agency==1;
select avg(duration) from transaction where state == 1 and where id_agency==1;
如何构建一个存储过程,将这些请求的所有结果收集到一个列表键值中
CountAgency1CountState1 = 123;
CountAgency2CountState5 = 645;
CountAgency8AverageState7 = 987;
数据表结构:2个表:
表事务:id\u事务、持续时间、状态、id代理
Table Agency:
idAgency,Address,city
实际上,假设您的数据,我们可以使用AVG()和GROUP by根据ID获取计数。这是一个示例,如果您提供准确的数据,我们可以获得更准确的输出
CREATE table #T(ID INT,Value INT)
INSERT INTO #T (ID,Value)values (1,10),(1,20),(1,30),(2,10),(2,20),(2,30)
GO
CREATE PROCEDURE Getaverage
(@i_id INT)
AS
BEGIN
select DISTINCT COUNT(ID) ,AVG(value),SUM(VALUE) from #T t
WHERE (t.id = @i_id OR @i_id IS NULL)
GROUP BY ID
END
看起来你需要的是按ID和状态分组
SELECT ID_Agency
,State
,Count(*) [ID_Count]
,AVG(Duration) [Avg_Duration]
FROM Transaction
group by ID_Agency
,State
这将为每个ID提供一行,并使用所需的2个值进行说明。为什么不在一个查询中完成所有操作
SELECT 'CountAgency' +
CAST(idAgency as varchar) +
'CountState' +
CAST(state as varchar) As Name
,CountAgency
,AvgDuration
FROM (
SELECT idAgency
,state
,COUNT(*) As CountAgency
,AVG(T.Duration) As AvgDuration
FROM [Transaction]
GROUP BY idAgency, state
) InnerQuery
定义有问题的表结构,并输出示例为什么不
从交易组中按ID\u机构、状态选择ID\u机构、状态、计数(*)[ID\u计数],平均(持续时间)[AVG\u持续时间]将ID\u机构、状态编辑转换为下面的答案。确定;现在我需要执行这个查询5次,每个状态一次。是否可以执行2个查询并收集结果?@Erixx为什么要一次执行一个值?@Erixx在过程中,您可以通过哪个状态传递该ID并获取结果集?否则,如果希望全部通过0条件