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

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

【问题讨论】:

  • 编辑问题以文本格式而不是图像添加一些示例数据和所需结果。

标签: sql sql-server tsql window-functions gaps-and-islands


【解决方案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 行的审核状态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 2015-04-07
  • 1970-01-01
相关资源
最近更新 更多