Select A, min(b) from TableX
group by a
这有效,但我还想要一条信息。每个A的输出为A,A为min(b)。
但我也想从那一行得到C.
我无法弄明白该怎么做!
MS SQL Server 2012
“C”是该行的系统。
所以表有
Sysident ID Date
1 100 2014-01-01
2 100 2014-01-02
3 200 2014-02-01
4 200 201-002-05
等
我想输出
Sysident id Date
1 100 2014-01-01
3 200 2014-02-01
我可以通过ID获取ID和最小日期的简单选择ID,最小(日期)组,但不知道如何为每个行获取Sysident。
当我编写/编辑它时,我的示例表看起来像一个表,但是当它显示时,它们一起运行。我搜索了HELP格式化,所以它看起来像一个表,但找不到任何东西。
问题非常清楚(对我而言)。对于每个唯一的A,我希望行的sysident具有最早的日期和日期。
答案 0 :(得分:1)
如果您想要第一个date
,可以使用min
:
select id
, min(sysident)
, min(date)
from YourTable
group by
id
如果您想要特定版本的sysident
,请说明date
列排序的第一个版本,您可以使用SQL Server的row_number()
:
select *
from (
select row_number() over (
partition by id
order by [date]) as rn
, min([date]) over (partition by id) as min_date
, id
, sysident
from YourTable
) as SubQueryAlias
where rn = 1 -- Only oldest row per value of id
要获得更多答案,请查看greatest-n-per-group代码。