SQL 从结果中的 GROUP BY 中排除字段,但在 WHERE 中使用

use*_*455 2 t-sql

非常简单的表格:

CREATE TABLE [dbo].[Recognitions](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Submitter_CH_id] [int] NULL,
[Submitter_Last_Name] [varchar](50) NULL,
[Submit_Date] [datetime] NULL,

Submitter_CH_id Submitter_Last_Name Submit_Date
50              Prokupek             2014-04-01 00:00:00.000
50              Prokupek             2014-04-07 00:00:00.000
50              Prokupek             2014-04-01 00:00:00.000
50              Prokupek             2014-04-07 00:00:00.000
215             Conklin              2014-04-07 00:00:00.000
215             Conklin              2014-04-07 00:00:00.000
130             Catron               2014-04-07 00:00:00.000
136             Jardee               2014-04-07 00:00:00.000
247             Emken                2014-04-07 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

我需要做的是获取在特定日期范围内按 分组的所有提交的计数recipient_ch_id。我的应用程序允许用户输入日期范围,因此它需要成为我的应用程序的查询结果的一部分才能使用它。

我需要将结果按 分组Submitter_CH_id。所以像这样:

SELECT TOP (100) PERCENT Submitter_CH_id, Submitter_First_Name, Submitter_Last_Name,     Submitter_Email, Submitter_Department, 
                  Submit_Date AS [Last Submit], COUNT(Submitter_CH_id) AS [Total Submit]
FROM         dbo.Recognitions
GROUP BY Submitter_First_Name, Submitter_Last_Name, Submitter_Email,     Submitter_Department, Submitter_CH_id, Submit_Date
ORDER BY Submitter_CH_id
Run Code Online (Sandbox Code Playgroud)

我想要的是以下内容:

Submitter_CH_ID Submitter_Last_Name Total Submissions
50              Prokupek             4
215             Conklin              2
130             Catron               1
Run Code Online (Sandbox Code Playgroud)

...但是因为我还必须将结果包含Submit_Date在结果中GROUP BY,而不是显示每个唯一日期的每个 ID 的计数(当然必须这样做),所以我得到这样的结果:

Submitter_CH_ID Submitter_Last_Name Total Submissions
50              Prokupek                 2
50              Prokupek                 2
215             Conklin              1
215             Conklin              1
130             Catron               1
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?这是 MS SQL 2008。非常感谢。

Hog*_*gan 5

使用子查询......像这样:

select Submitter_CH_ID, Submitter_Last_Name, count(ID) AS [Total Submissions]
from (
    select ID, Submitter_CH_ID, Submitter_Last_Name
    from  dbo.Recognitions
    where date >= @start_date and date <= @end_date
) T
GROUP BY Submitter_CH_ID, Submitter_Last_Name
Run Code Online (Sandbox Code Playgroud)

耶子查询!