选择a,min(b)但也希望来自同一记录的C.

时间:2014-08-30 21:22:20

标签: sql sql-server sql-server-2012 greatest-n-per-group

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具有最早的日期和日期。

1 个答案:

答案 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

要获得更多答案,请查看代码。