小编pea*_*dog的帖子

根据 Varchar 字段从每个组中选择一行

给定一个Avenger数据如下所示的表:

id  Avenger         Type    Power
1   Captain America foo      2
2   Captain America bar      3
3   Me              foo      5
4   You             foo      1
5   You             bar      7
6   Iron Man        foo      4
Run Code Online (Sandbox Code Playgroud)

我想返回一个不同的复仇者联盟结果集,尽管表中的所有其他数据都与我的处理兴趣相关。出于商业原因,我想Type在适用的情况下返回“bar”类型的记录而不是“foo”。

我可以分两步做到这一点,当然:

declare @avenger table
(
    id int,
    Avenger varchar(50),
    [Power] varchar(50),
    [Type] varchar(50)
)

insert into @avenger
select * from Avenger where Type = 'bar'

insert into @avenger
select t.ID, t.Avenger, t.Type, t.Power from Avenger as t
where t.Avenger not in (select Avenger …
Run Code Online (Sandbox Code Playgroud)

sql-server greatest-n-per-group sql-server-2014

5
推荐指数
1
解决办法
3621
查看次数

基于头记录分组数据

我有一个电子表格,我要导入到原始数据库中,一个 SQL Server 2016 数据库。它有所谓的“密码箱格式”的记录,显然是银行使用的。它通常看起来像这样:

Batch1 详细信息
子记录Batch2 的批处理 标题行的
另一个子记录
摘要

我在这里设置了一个小提琴

需要注意的是:

  • 第 1 列表示该行的记录“类型”。它是唯一的“通用”列。
  • 每隔一列本质上会根据记录类型而变化。
  • 将子记录与父记录相关联的唯一原因是它们出现在父记录之后和下一个父记录之前。ID 在行之间不共享。
  • 批次后面有可变数量的子行(不可预测)。

有没有办法查询这个,以便我可以轻松地对例如一批和它的子+页脚记录进行分组?我必须做的一件事是指出页脚记录包含正确的聚合(取自子记录;包括批次的子记录数量,这是我需要验证的一部分)。

sql-server t-sql sql-server-2016

5
推荐指数
1
解决办法
249
查看次数