聚合 SQL 函数以仅获取每组中的第一个

2024-07-03

我有 2 个表 - 一个帐户表和一个用户表。每个帐户可以有多个用户。我有一个场景,我想对这两个表执行单个查询/联接,但我想要所有帐户数据 (Account.*),并且只需要first用户数据集(特别是他们的名字)。

我不想对聚合组执行“最小”或“最大”操作,而是想做“第一个”操作。但是,显然,TSQL 中没有“第一个”聚合函数。

关于如何获取此查询有什么建议吗?显然,很容易得到Account x Users的笛卡尔积:

 SELECT User.Name, Account.* FROM Account, User
 WHERE Account.ID = User.Account_ID

但是我如何才能根据 User.ID 的顺序仅从产品中获取第一个用户呢?


与其分组,不如这样……

select
    *

from account a

join (
    select 
        account_id, 
        row_number() over (order by account_id, id) - 
            rank() over (order by account_id) as row_num from user
     ) first on first.account_id = a.id and first.row_num = 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

聚合 SQL 函数以仅获取每组中的第一个 的相关文章

  • 针对表中的每一行运行 SQL Server 函数

    我有一个函数可以迭代表中的 每一行 当它运行时 它应该查看每一行 提取该行的相关 SET 值并运行该函数 该函数依次返回结果并使用正确的值更新正确的行 发生的情况是 它正在运行并返回最后一行的值 并用该值更新所有行 有什么想法我做错了吗 S
  • 使用左连接在单个更新语句中更新多个表

    我意识到我所要求的可能是不可能的 我想基于 LEFT JOIN 和 WHERE 子句对两个单独的表执行 UPDATE 这是我的尝试 UPDATE PERIODDATES as pd periods2 as p2 SET pd PERIODC
  • SQL - 添加从条件开始的顺序计数器列,具有分组依据和非递增 ID

    这个问题的棘手版本 SQL 添加从条件开始的顺序计数器列 https stackoverflow com questions 57897292 sql add sequential counter column starting at co
  • 从sql server 2005中的列中获取查询的xml节点

    我有一个包含 2 列的表 第一个是带有主键的整数列 第二个是带有数据的 xml 列 数据列包含xml如下
  • sql查询中where子句中的CASE语句

    我正在尝试在我正在处理的查询的 where 子句中编写一个 case 语句 我正在水晶报告中导入代码 我基本上是想说明变量 类型 是否设置为 创建 以便在where子句中为该日期范围运行 否则为不同的日期范围运行 它一直给我一个错误 我似乎
  • SQL:从单个查询列出多对多

    我有 3 个表 分别代表 Users Roles 和多对多 UsersInRoles 键为 UserId RoleId 相关列 用户名 角色名 在管理 html 应用程序中 我想显示所有用户及其所在角色的列表 我尝试从 SQL 构建一个将返
  • 查找SQL记录中的并发用户数

    我有以下结构的表 UserID StartedOn EndedOn 1 2009 7 12T14 01 2009 7 12T15 01 2 2009 7 12T14 30 2009 7 12T14 45 3 2009 7 12T14 47
  • 对时间序列数据重新采样

    我有一个以毫秒为单位的时间序列列表 我想对时间序列进行重新采样并对组应用平均值 我如何在 Postgres 中实现它 重新采样 是指聚合一秒或一分钟内的所有时间戳 一秒或一分钟内的所有行形成一组 表结构 date x y z Use dat
  • 简单的t-sql而不是触发器

    任何人都可以帮助解决简单的 t sql 脚本与板载触发器的问题吗 我使用非常简单的触发器将数据从一个表复制到另一个表 这些表之间没有关系 当我尝试在触发器创建后 从同一脚本 直接第一次插入数据时 我得到了所需的结果 但所有接下来的尝试都会失
  • 连接多个表中的多行

    我已经评论过many https stackoverflow com questions 273238 how to use group by to concatenate strings in sql server other https
  • SQL 用逗号替换点

    我有以下代码 SELECT cast Listenpreis 1 19 as decimal 29 2 as Listenpreis FROM SL M03KNE dbo ARKALK 我得到这个值 5 59 我尝试将点替换为 komma
  • ASP.NET > SqlServer;信任和授权

    我们有一个系统 客户希望集成 Windows 身份验证 这是一个 ASP NET 3 5 应用程序 连接到 Sql Server 2005 Web服务器是Server 2003 R2 SP2 数据库服务器是 Server 2003 SP2
  • 邮政编码 10 位数字字符使用的约束检查

    我有一张桌子 上面有Char 10 列类型 命名postal Code我需要对所有值进行约束检查 就像 10 位数字一样1234567890没有别的 我使用以下内容 CONSTRAINT CH PCDigit CHECK PostalCod
  • 由于表扫描,表值参数的性能较低

    我有一个将参数传递给 SQL 过程的应用程序 其中一个参数是表值参数 其中包含要包含在 where 子句中的项目 因为当我将 TVP 连接到具有 200 万行的表时 表值参数没有附加任何统计信息 所以查询速度非常慢 我还有什么选择 同样 目
  • 奇怪的 SQL Server 视图定义

    我 继承 了一个已有 10 多年历史的应用程序 它有时确实显示出它的年龄 我今天偶然发现了一个非常奇怪的视图定义 我似乎无法理解它 你能帮助我吗 这最初是在 SQL Server 7 0 上 后来被迁移到 SQL Server 2005 但
  • 与 NULL 合并

    我在视图中发现了这段 SQL 片段 我对它的用途感到相当困惑 为简洁起见 实际的 SQL 被缩短了 SELECT COALESCE b Foo NULL AS Foo FROM a LEFT JOIN b ON b aId a Id 我想不
  • 如何改进使用两列的 case 语句

    我有一个名为 购买 的表 其中有一个 状态 列 其中 1 已授权 2 已完成 还有一些其他值 我还有一个 Retailer 表 其中有一列 RetailerProcessType 其中 1 是一步 2 是两步 我有以下疑问 CASE pur
  • 上下文 sp_OAMethod“发送”中的 msxml3.dll

    Win2003 SQL Server 2005 中的工作代码在 Win2012 SQL Server 2012 sp1 下无法工作 唯一 真实solution https social msdn microsoft com 443 Foru
  • 比较跨多个数据库的存储过程 (SQL Server)

    SQL 大师 我们的架构由多个客户数据库和一个公共代码库组成 当我们部署数据库更改时 必须针对每个数据库运行脚本 由于部署问题 我们的存储过程有时会彼此不同步 我想创建一个脚本来返回这些不匹配的过程 以确保我们在部署后拥有数据库的同步副本
  • 超过 1 列具有 string_agg 的唯一值

    我正在尝试分组并获取多列的值列表 这是一个例子 City State Income Salem OH 40000 Salem OH 45000 Mason OH 50000 Dayton OH 60000 Salem MA 40000 Ma

随机推荐