T-SQL:根据 MA​​X 选择列(其他列)

2023-12-04

我希望有一种简单的方法可以在不使用子查询的情况下执行此操作:

场景:您有“TableA”,其中包含“Key”、“SubKey”和“Value”列。我需要获取给定“Key”的 MAX(“SubKey”) 的“Value”。

因此,如果表包含以下行:

KEY SUBKEY VALUE
1   1      100
1   2      200
1   3      300

对于 Key = 1,我需要值 300。我希望做这样的事情:

SELECT
  VALUE
FROM
  TableA
WHERE
  Key = 1
HAVING
  SubKey = MAX(SubKey)

但这是不行的。有没有办法在不执行“WHERE SubKey = (subselect for max subkey)”的情况下执行此操作?


使用自连接:

这将返回子键值匹配的所有值(如果有多个值)。

SELECT a.value
  FROM TABLE a
  JOIN (SELECT MAX(t.subkey) AS max_subkey
          FROM TABLE t
         WHERE t.key = 1) b ON b.max_subkey = a.subkey
 WHERE a.key = 1

使用 RANK 和 CTE (SQL Server 2005+):

这将返回子键值匹配的所有值(如果有多个值)。

WITH summary AS (
  SELECT t.*,
         RANK() OVER(ORDER BY t.subkey DESC) AS rank
    FROM TABLE t
   WHERE t.key = 1)
SELECT s.value
  FROM summary s
 WHERE s.rank = 1

使用 ROW_NUMBER 和 CTE (SQL Server 2005+):

这将返回一行,即使有多个行具有相同的子键值......

WITH summary AS (
  SELECT t.*,
         ROW_NUMBER() OVER(ORDER BY t.subkey DESC) AS rank
    FROM TABLE t
   WHERE t.key = 1)
SELECT s.value
  FROM summary s
 WHERE s.rank = 1

使用顶部:

这将返回一行,即使有多个行具有相同的子键值......

  SELECT TOP 1
         t.value
    FROM TABLE t
   WHERE t.key = 1
ORDER BY t.subkey DESC
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

T-SQL:根据 MA​​X 选择列(其他列) 的相关文章

  • 如何授予所有表的 REFERENCES 权限

    我必须授予REFERENCES登录权限说sql login 我可以给予资助REFERENCES对单个表的权限 例如 GRANT REFERENCES ON Mytable TO sql login 有什么办法可以授予REFERENCES允许
  • 如何查找 PostgreSQL 数据库的上次更新时间?

    我正在使用一个批量更新的 postgreSQL 数据库 我需要知道数据库 或数据库中的表 上次更新或修改的时间 两者都可以 我看到 postgreSQL 论坛上有人建议使用日志记录并查询日志 这对我不起作用 因为我无法控制客户端代码库 你可
  • postgres 有 CLOSEST 运算符吗?

    我正在寻找这样的东西 给定一个表格 id number 1 7 2 1 25 3 1 01 4 3 0 查询SELECT FROM my table WHEREnumberCLOSEST 1 将返回第 3 行 我只关心数字 现在我有一个程序
  • 将大量实体插入 SQL Server 2012 [重复]

    这个问题在这里已经有答案了 我正在进行一个使用 Entity Framework 5 和 SQL Server 2012 的项目 我们需要一次插入大量行 100k 个实体的顺序 基本上 我们有一个物理程序 它输出大量二进制数据 然后我们需要
  • 限制 SQL Server 连接到特定 IP 地址

    我想将 SQL Server 实例的连接限制为特定 IP 地址 我想阻止来自除特定列表之外的任何 IP 地址的任何连接 这是可以在 SQL Server 实例或数据库中配置的东西吗 听起来像是你会使用Windows防火墙 http tech
  • 如何在 sqlalchemy 中创建基于文字的查询?

    我创建了一个函数来创建表达式 def test operator1 operation operator2 return literal column operator1 op operation operator2 现在当我用 test
  • 使用 Spark DataFrame 获取组后所有组的 TopN

    我有一个 Spark SQL DataFrame user1 item1 rating1 user1 item2 rating2 user1 item3 rating3 user2 item1 rating4 如何按用户分组然后返回TopN
  • 使用Powershell访问远程Oracle数据库

    我需要能够连接到我的网络上基于 Windows 7 的 Oracle 服务器 32 位 Oracle XE 我需要连接的机器运行 Windows 7 64 位 两台机器上都安装了 Powershell 我已在 64 位计算机上安装了 Ora
  • SPARK SQL - 当时的情况

    我是 SPARK SQL 的新手 SPARK SQL 中是否有相当于 CASE WHEN CONDITION THEN 0 ELSE 1 END 的内容 select case when 1 1 then 1 else 0 end from
  • 正则表达式 '?' 的类似物(前一项可选)在T-SQL中像什么?

    我想知道 是否可以翻译包含 的正则表达式 前面的项目可选 在 T SQL LIKE 模式中 DB 端无需任何操作 例如 31 4 我可以将其分成几个子句 但如果正则表达式包含很多 这不太方便 LIKE不使用正则表达式 并且它使用的模式语言没
  • 如何在使用连接池时强制 SqlConnection 物理关闭?

    我明白 如果我实例化一个 SqlConnection 对象 我实际上是从连接池中获取一个连接 当我调用 Open 时 它将打开连接 如果我对该 SqlConnection 对象调用 Close 或 Dispose 方法 它将返回到连接池 但
  • Oracle:使用SQL或PL/SQL查找动态SQL中的错误位置

    如何在 PL SQL 或 SQL 中找到动态 SQL 语句中的错误位置 从 SQL Plus 中 我看到了错误的位置 例如 无效的 SQL DML 语句 SYS orcl gt SELECT 2 X 3 FROM 4 TABLEX 5 TA
  • Kerberos 双跳

    我们遇到了臭名昭著的 Kerberos 双跳问题 这是一个全新的域 是从以前使用模拟和委派的另一个提供商迁移而来的 我们已将操作系统升级到最新的 SQL 服务器 2017 WPF 应用程序 使用域凭据 gt Web 服务 IIS 10 上的
  • SQL 删除表并重新创建并保留数据

    在我们最初的设计中 我们搞砸了表中的外键约束 现在表已充满数据 我们无法在不删除表中所有记录的情况下更改它 我能想到的唯一解决方案是创建一个备份表并将所有记录放在那里 然后删除所有记录 更改表并开始将它们添加回来 还有其他 更好 的想法吗
  • 使用 JSON 参数的 Postgres 批量 INSERT 函数

    这是一个plpgsqlpostgres 的函数9 6 它试图INSERT一行 如果插入没有失败 由于违反键约束 那么它会运行更多命令 CREATE FUNCTION foo int text text RETURNS void AS BEG
  • 避免连接失败时出现空指针

    我有我的域类 带有命名查询 class Atendimento implements Serializable Funcionario funcionario static mapping funcionario column FUNCOD
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • sql server 按组排名

    问题看似简单 但我却无法理解 这是针对 sql 服务器的 what I have in a table What I need as a output cksum id cksum id 2162514679 204 2162514679
  • 如何从 PostgreSQL 中的时间戳列值提取一天中的时间(或小时)?

    我正在尝试从 PostgreSQL 中的 时间戳 列中提取一天中的时间 这是我的做法 但是 太糟糕了 知道如何做得更好吗 SELECT date part hour date demande text hours date part min

随机推荐

  • Symfony - ManyToOne 关系中的循环引用错误

    我正在使用 Symfony 5 和主义 我有两个具有多对一关系的实体 Product and ProductImage 每个产品可以有多个图像并且产品实体有getProductImages 方法来获取其产品图像 但是当我在控制器响应中使用此
  • 蚁耳更新,没有完全爆炸的耳朵

    我正在使用 ant 1 8 2 并且我有一个很大的 Ear 文件 根据用户在安装过程中的选择 需要对耳朵进行轻微的改变 在安装过程结束时 我运行一个 ant 脚本 该脚本根据用户的选择更新 Ear 这些文件仅包含在耳朵中 如果用户有相关许可
  • “...”中没有导出 HTTP 方法。为每个 HTTP 方法导出命名导出

    我正在开发一个使用 Google reCAPTCHA 的 React js Next js 项目 我的前端似乎正在工作 我知道 因为我一路上设置了打印语句 但后端在我的本地终端中给了我这个错误 错误 src app api recaptch
  • Powershell:生产中的调试/良好的异常处理

    在生产中分析 powershell cmdlet 的最佳方法是什么 假设您编写了一个执行以下操作的脚本 写入 lof 注册表值 注册 COM Dll 制作 IIS 应用程序池 启动Windows服务 中间出了问题 那么通知用户以便跟踪和调试
  • PHP登录后重定向回来

    我有一个这样的场景 当管理员收到客户发来的有关订单的邮件时 其中包含 PHP 表单页面的 URL 链接 该页面只能通过管理员登录来访问 如果管理员未登录 则 url 将重定向至登录页面 管理员成功登录后 我需要将他重定向到他在电子邮件中收到
  • 如何使用react-router重定向到另一个路由?

    我正在尝试使用反应路由器做一件简单的事情 版本 1 0 3 重定向到另一个视图 import React from react import Router Route Link RouteHandler from react router
  • 使用php对程序进行交互控制

    我想使用 php 在远程计算机上运行 C 程序 最终目标是使用手机或任何其他计算机上的网络浏览器来控制程序 我的 C 程序在几十分钟内从不同的传感器获取数据 它在 Linux 中从命令行运行 我可以通过按计算机键盘上的 q 键将其关闭 主线
  • 为什么对 DOM 元素执行 Array.prototype.slice.call(nodeList) ?

    许多 JavaScript 库 jQuery Zepto 似乎都在 querySelectorAll getElementsByTag 或 ClassName 结果上调用 Array prototype slice call 通过在 Sta
  • Heroku推送被拒绝,无法编译Python/django应用程序(Python 2.7)

    我正在做 Heroku 演练 https devcenter heroku com articles django preventions对于 python 开发人员 我在尝试运行 git push heroku master 时遇到错误
  • 在 R 中使用 stat_function 在对数刻度上绘图

    我在尝试清醒头脑时遇到了严重的问题stat function in R s ggplot2 我从这个简单的例子开始 ggplot data frame x c 1 1e4 aes x stat function fun function x
  • 如何使用 Python (2.7) 读取 Windows 通知?

    有没有办法使用Python读取Windows系统通知 屏幕右下角的气泡对话框 我试图阅读通知的文本及其生成时间 但我未能成功找到有关如何执行此操作的任何信息 我找到了一些关于如何generate这些通知 例如这个问题 如何用python创建
  • 如何从源代码为 CMake 构建 .deb 文件?

    如何从 CMake 源代码生成 ubuntu 的 deb 文件 我已经使用 apt 安装了 希望是大部分 构建依赖项 sudo apt get build dep cmake 使用 git 查看 cmake 存储库 git clone ht
  • 创建有角度的 CSS3 分隔线 - 100% / 自动高度

    我检查了这两个帖子 相邻的 div 带有倾斜的边框 复制 and 具有斜边的形状 响应式 但发布的这些解决方案不会调整为容器的 100 高度 我需要这个 我找不到适合我的场景的解决方案 我正在尝试复制这种行为 区别在于该容器内的文本可以是任
  • “com.gorylenko.GenerateGitPropertiesTask”属性“gitProperties”缺少输入或输出注释?

    我面临以下错误 我不知道哪个插件导致了这个 我在用Java 11和Gradle 7 4 1 wrapper 发现任务配置有些问题 myservice server generateGitProperties 类型 生成GitProperti
  • 如何使用jquery-ui在另一个框架中弹出对话框

    我正在使用 jquery ui 1 8 创建一个小网页 它有一个框架集和三个框架 然后我在 test php 文件中添加了一个按钮 该文件在第一帧 f1 加载 并在 test2 php 文件中添加了一个 div 该文件在第二帧加载 div
  • glDeleteBuffers 比 glBufferData 慢

    我的 iOS Android 游戏遇到一些性能问题 其中几个 VBO 必须每隔一段时间更新一次 对我的游戏进行分析后发现 glDeleteBuffers 每次 VBO 更新最多需要 7 毫秒 当帧通常只需要 4 毫秒渲染时 这当然会导致出现
  • Java 7 中的 JEditorPane 换行

    首先 我希望这不是我开始新话题的问题 老实说 我不知道如何根据已经回答的问题提出问题 所以我做了这个 我对 Java 还很陌生 我的问题如下 我正在编写一个小聊天程序 并且正在使用JEditorPane与HTMLEditorKit以不同颜色
  • 渲染网站(包括 javascript)的 shell 工具

    我们想在 Linux shell 上测试我们的网页 出于这个原因 我正在寻找一个 shell 工具 它从服务器获取 html 页面 如 wget 然后执行包含的 Javascript 包括图片等 之后 该工具应该为我提供渲染页面的 屏幕截图
  • 由于捕获的异常而显示 WinRT MessageDialog 的正确方法是什么?

    由于捕获的异常而显示消息对话框的正确方法是什么 我最初尝试过 try await DoSomething catch InvalidOperation ex await MessageDialog ex Message ShowAsync
  • T-SQL:根据 MA​​X 选择列(其他列)

    我希望有一种简单的方法可以在不使用子查询的情况下执行此操作 场景 您有 TableA 其中包含 Key SubKey 和 Value 列 我需要获取给定 Key 的 MAX SubKey 的 Value 因此 如果表包含以下行 KEY SU