【发布时间】:2009-12-02 23:53:09
【问题描述】:
桌子:
declare @Table table (
id int,
ticketid int,
sponsor int,
dev int,
qa int,
savedate datetime
)
insert into @Table values (1,100,22,0, 0, '2008-10-29 11:17:59.527')
insert into @Table values (2,100,5,0, 0, '2008-10-29 11:00:37.030')
insert into @Table values (3,101,22,0, 0, '2009-10-29 11:10:27.687')
insert into @Table values (5,101,44,0, 0, '2008-10-31 12:07:52.917')
insert into @Table values (6,101,32,0, 0, '2009-06-30 08:16:12.343')
insert into @Table values (7,101,44,0, 0, '2009-10-31 10:12:11.369')
我正在尝试选择前 1 个最大保存数据,其中 recordid 是某个记录,按赞助商分组。
我的进步:
select max(savedate)
from @Table
where ticketid = 101
group by sponsor
返回
2009-10-29 11:10:27.687
2009-06-30 08:16:12.343
2009-10-31 10:12:11.370
关闭,我的分组正确,但我想要前 1 个最近的日期。所以我这样做:
select top 1 max(savedate)
from @Table
where ticketid = 101
group by sponsor
返回
2009-10-29 11:10:27.687
哇哦,明白了,该休息一下了..等等..这不是你最近的约会!让我们尝试通过 savedate 来订购这些
select top 1 max(savedate)
from @Table
where ticketid = 101
group by sponsor
order by savedate desc
哦不!可怕的:
“列“@Table.savedate”无效 在 ORDER BY 子句中,因为它是 不包含在任一聚合中 函数或 GROUP BY 子句。”
但 saveate 已聚合在选择列表中!我该怎么做?
【问题讨论】:
标签: sql-server sql-server-2005 tsql