您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL根据一列中的最大值从多列中选择不同的行

SQL根据一列中的最大值从多列中选择不同的行

WITH
  sequenced_data AS
(
  SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY ECode ORDER BY TotalNrShare) AS sequence_id
  FROM
    myView
)
SELECT
  *
FROM
  sequenced_data
WHERE
  sequence_id = 1

但是,这应提供与示例查询相同的结果。这只是完成同一件事的另一种方法

但是,当您说出问题时,请您详细说明出什么问题了吗?是TotalNrShare真正的字符串,例如?这会搞乱您的订购 _(等等MAX())_吗?

即使以上代码与您的sql Server不兼容,也不应将其完全崩溃。您应该只会收到一条错误消息。尝试执行Select * By Magic,例如,它应该给出一个错误。我强烈建议您查看和/或重新安装Management Studio

在替代方案方面,您可以执行此操作…

SELECT
  *
FROM
  (SELECT ECode FROM MyView GROUP BY ECode) AS base
CROSS APPLY
  (SELECT TOP 1 * FROM MyView WHERE ECode = base.ECode ORDER BY TotalNrShare DESC) AS data

理想情况下,您可以base一个表替换子查询,该表已经具有您感兴趣的所有ECode的独特列表。

SQLServer 2022/1/1 18:52:45 有327人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶