SQL Server 查询需要从组中提取数据

Posted

技术标签:

【中文标题】SQL Server 查询需要从组中提取数据【英文标题】:SQL Server query need to pull data from group 【发布时间】:2020-01-31 13:16:16 【问题描述】:

我有以下数据和突出显示的组我想从每个组中提取最小日期时间(灰色行),但除日期外,所有列中的数据都相同。我使用了 Min 聚合,但我缺少日期 2019-09-28-12.31.47.653829 行。不确定如何从组中获取所有 3 行。请帮帮我谢谢

【问题讨论】:

编辑问题以文本格式而不是图像添加一些示例数据和所需结果。 【参考方案1】:

我将其理解为差距和孤岛问题。您希望所有列中具有相同值的相邻行的最小日期期望日期,然后拉出具有最小日期的记录。

这是使用row_number() 和聚合解决它的一种方法:

select 
    id, 
    division, 
    sub_div, 
    status, 
    queue,
    min(event_dattim) min_event_dattim
from (
    select 
        t.*,
        row_number() over(order by event_dattim) rn1,
        row_number() over(
            partition by id, division, sub_div, status, queue
            order by event_dattim
        ) rn2
    from mytable t
) t
group by 
    id, 
    division, 
    sub_div, 
    status, 
    queue, 
    rn1 - rn2

【讨论】:

非常感谢您的回答!我尝试了建议的 SQL 查询,但仍然缺少日期 2019-09-28-12.31.47.653829 行的审核状态。

以上是关于SQL Server 查询需要从组中提取数据的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQL:如何从组中查找记录

仅从组中选择第一行的 SQL 模式

无法通过查询从组中获取结果

如何仅从组中查询具有最新时间戳的文档?

Oracle SQL:从组中选择最大值和最小值

按值(不是列)分组后从组中选择一个随机条目?