Tsql 需要一个存储过程,为每个select count(*)选择distinct,并将输出格式化为表

Tsql 需要一个存储过程,为每个select count(*)选择distinct,并将输出格式化为表,tsql,Tsql,好吧,我对t-sql的了解还不够,还不足以做我需要做的事情~甚至不知道它是否可行 我需要一个存储过程,在该过程中,我可以指定一个用户名,并获取该用户在表中存在的每种类型的项的计数 例如,我指定@username='joshf' 然后,我需要让存储过程执行以下操作: 从[dbo].[request]中选择不同的[Type] 然后,对于列出的每种类型,我需要它: 从[dbo].[request]中选择COUNT*作为@type,其中[type]=@PipelineItem和[AssignedTo]=

好吧,我对t-sql的了解还不够,还不足以做我需要做的事情~甚至不知道它是否可行

我需要一个存储过程,在该过程中,我可以指定一个用户名,并获取该用户在表中存在的每种类型的项的计数

例如,我指定@username='joshf'

然后,我需要让存储过程执行以下操作:

从[dbo].[request]中选择不同的[Type]

然后,对于列出的每种类型,我需要它:

从[dbo].[request]中选择COUNT*作为@type,其中[type]=@PipelineItem和[AssignedTo]=@username

我需要将输出放在如下格式的表格中:

类型 计数 类型1 1. 类型2 0 类型3 4. 类型4 1. 您需要的是查询分组

以下查询将给出[AssignedTo]@username的所有[Type]的计数

但是,由于您希望包括[Type],而不是[AssignedTo]到@username,比如Type2,所以不能将该条件放在WHERE子句中。您将需要一个条件大小写表达式来执行计数


请提供一些样本数据以及预期的结果。你希望COUNT*AS@type做什么?天哪,我想得太多了。非常感谢你。它并没有专门针对“从不同的表中选择不同的类型”来获取主表中未使用的类型~但回想起来,对于我来说,这可能有点过分了。
SELECT [Type],
       COUNT (*)
FROM   [dbo].[request]
WHERE  [AssignedTo] = @username 
GROUP BY [Type]
SELECT [Type],
       SUM (CASE WHEN [AssignedTo] = @username THEN 1 ELSE 0 END) AS [Count]
FROM   [dbo].[request]
GROUP BY [Type]