非常简单的表格:
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。非常感谢。
使用子查询......像这样:
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)
耶子查询!