Select SQL Server CE:选择组合最大值和不同值?
我对SQL非常陌生。我有一个表,基本上是一组项目的结果表。不同的用户在不同的项目上工作,具有不同的完成日期和级别 以下是表格的布局: tblProjectLog:Select SQL Server CE:选择组合最大值和不同值?,select,max,sql-server-ce,distinct,Select,Max,Sql Server Ce,Distinct,我对SQL非常陌生。我有一个表,基本上是一组项目的结果表。不同的用户在不同的项目上工作,具有不同的完成日期和级别 以下是表格的布局: tblProjectLog: [plogID] int NOT NULL IDENTITY(1,1) PRIMARY KEY, [projID] int NOT NULL, [userID] int NOT NULL, [presID] int NOT NULL, [plogDateTime] datetime NO
[plogID] int NOT NULL IDENTITY(1,1) PRIMARY KEY,
[projID] int NOT NULL,
[userID] int NOT NULL,
[presID] int NOT NULL,
[plogDateTime] datetime NOT NULL,
[plogNote] nvarchar(100)
以下是我的初始SQL:
select
plog.plogID, plog.userID, plog.projID, plog.presID,
u.userFirstName + ' ' + u.userLastName AS [User],
proj.projName, pres.presResult, plog.plogDateTime, plog.plogNote
from
tblProjectLog plog
inner join
tblUser u on plog.userID = u.userID
inner join
tblProject proj on plog.projID = proj.projID
inner join
tblProjectResult pres on plog.presID = pres.presID
order by
plog.plogID asc
它返回所有内容(应该返回,因为没有MAX或DISTINCT语句)。所以我得到的是:
plogID userID projID presID User projName presResult plogDateTime plogNote
2 1 1 2 John Smith Birdhouse Completed 2015-06-13 10:54:45.873 Well done. Sanding needs work.
3 3 1 2 Katie Williams Birdhouse Completed 2015-06-13 13:55:54.813 Excellent staining with solid work.
4 2 7 1 John Thomas Step Ladder In Progress 2015-06-13 15:57:20.593 going along well
5 6 2 3 Diane Stevens Chessboard Withdrawn 2015-06-13 16:57:57.393 leaving town for 2 weeks. will start new when she returns.
6 7 4 1 Lia McKenzie Lamp In Progress 2015-06-13 17:36:39.183 Working on electical routing
7 8 5 1 Stephanie Drake Toolbox 1 In Progress 2015-06-14 11:41:27.907 solid starting work
8 7 4 1 Lia McKenzie Lamp In Progress 2015-06-14 11:52:25.923 finished sanding. first day of stain.
9 9 3 1 Cheryl Lor Step Stool In Progress 2015-06-14 11:59:30.113 Learning to use a table saw. Nice start.
10 2 7 2 John Thomas Step Ladder Completed 2015-06-15 11:20:51.737 good finished project.
11 7 4 2 Lia McKenzie Lamp Completed 2015-06-15 11:21:31.723 Excellent work.
12 2 1 1 John Thomas Birdhouse In Progress 2015-06-15 13:08:53.407 starting complicated birdhouse design
清理它以使其更易于阅读(删除ID字段(plogID除外,plogID是tblProjectLog
上的主键)和其他字段)为我们提供了以下信息:
2 | John Smith | Birdhouse | Completed
3 | Katie Williams | Birdhouse | Completed
4 | John Thomas | Step Ladder | In Progress
5 | Diane Stevens | Chessboard | Withdrawn
6 | Lia McKenzie | Lamp | In Progress
7 | Stephanie Drake | Toolbox | In Progress
8 | Lia McKenzie | Lamp | In Progress
9 | Cheryl Lor | Step Stool | In Progress
10 | John Thomas | Step Ladder | Completed
11 | Lia McKenzie | Lamp | Completed
12 | John Thomas | Birdhouse | In Progress
我想得到的是:
2 | John Smith | Birdhouse | Completed
3 | Katie Williams | Birdhouse | Completed
5 | Diane Stevens | Chessboard | Withdrawn
7 | Stephanie Drake | Toolbox | In Progress
9 | Cheryl Lor | Step Stool | In Progress
11 | Lia McKenzie | Lamp | Completed
12 | John Thomas | Birdhouse | In Progress
但是,当我尝试添加MAX(plog.plogID)时,会出现以下错误:
错误代码:-2147467259[SQL Server Compact ADO.NET数据提供程序]
HResult:-2147217900,国家错误:25518错误消息:总计
和分组表达式,ORDER BY子句只能包含
聚合函数和分组表达式
当我在plog.userID字段中添加一个独特的标记时,我得到一个令牌错误
有谁能帮助我尝试通过每个用户ID只获取最近的条目,并且每个用户ID只获取一个条目?是否需要MAX和DISTINCT,或者sql noobie是否有其他方法来完成此任务
哦,我忘了提到它是SQL Server CE。感谢您提供的任何帮助。另一个网站上的一位用户为我发布了一个非常有效的答案。我想给用户(和网站)评分,但我不确定关于发布其他网站和/或其用户的规则 这是他发布的sql语句,它提供了我想要的东西。希望这将有助于其他人,如果他们正在寻找类似的东西,我一直在寻找
select plog.plogID, plog.userID, plog.projID, plog.presID,
u.userFirstName + ' ' + u.userLastName AS [User],
proj.projName, pres.presResult, plog.plogDateTime, plog.plogNote
from tblProjectLog plog
inner join tblUser u on plog.userID = u.userID
inner join tblProject proj on plog.projID = proj.projID
inner join tblProjectResult pres on plog.presID = pres.presID
inner join
(SELECT MAX(plog.plogID) as m_plogID
FROM tblProjectLog plog
GROUP BY plog.userID
) M
ON m_plogID = plog.plogID
order by plog.plogID asc
希望这有帮助。:)