【问题标题】:SQL Server : Select max with Sub-selectSQL Server:使用子选择选择最大值
【发布时间】:2013-05-26 15:01:06
【问题描述】:

我试图在 SQL Server 中获取另一个选择的结果集的最大值,但不能。我不确定我在 SQL Server 中做错了什么。任何帮助都会很棒。

这是我的 SQL:

select 
    max(A.ID), A.Name, A.RMName, A.RName, A.DName, A.Section, A.CF, A.PPV, A.ESD,
    A.EED, A.EJ, 
    A.NJ, A.NAF, A.L4MAF, A.L4MJ, A.MLF, A.PL, A.PN, A.EMSFL, A.PV, A.FName, 
    A.FLevel, A.SC, A.PID, A.PFID 
from (
        select distinct 
            ID, Name, RMName, RName, DName, Section, CF, PPV,
            REPLACE(CONVERT (VARCHAR, ESD, 6), ' ', '-') ESD,
            REPLACE(CONVERT (VARCHAR, EED, 6), ' ', '-') EED,
            REPLACE(REPLACE(REPLACE(EJ, CHAR(10), ''), CHAR(13), ''), CHAR(9), '') as EJ,
            REPLACE(REPLACE(REPLACE(NJ,CHAR(10), ''), CHAR(13), ''), CHAR(9), '') as NJ,
            NAF,
            L4MAF,
            REPLACE(REPLACE(REPLACE(L4MJ,CHAR(10), ''), CHAR(13), ''), CHAR(9), '') as L4MJ,
            MLF,
            PL,
            PN,
            EMSFL,
            PV,
            FName,
            FLevel,
            SC,
            PID,
            PFID
        from 
            dbo.DFD def (nolock),
            dbo.DForm form (nolock),
            dbo.DExcp exc (nolock)
        where 
            exc.DPID = def.DFDID
            and def.DFID = form.DFID
            and NAF = 1
            and L4MAF = 1
            and RMName is not null
            and EED >= GETDATE()
            and EED <> '2050-01-01 00:00:00.000') as A
group by 
     Name, RMName, RName, DName, Section, CF, 
     PPV, ESD, EED, EJ, NJ, NAF, L4MAF, L4MJ, 
     MLF, PL, PN, EMSFL, PV, FName, FLevel, 
     SC, PID, PFID

【问题讨论】:

  • 澄清一下,您是否试图在 ID 为最大值的子查询中获取该行的所有列的值?
  • “我做不到”是什么意思?你得到一个错误?,错误的结果?
  • 是的,我需要显示所有行的所有返回值,并且根据结果集我需要显示一个最大 ID,因为所有其余字段可能在所有其他行中具有相同的数据。
  • 我无法获得正在返回的结果集的最大 ID,并且记录数相同或没有给我列 ID 的最大值。
  • 如果您将查询简化为一个能证明您的问题的最小示例,并给出实际与预期的结果,您更有可能获得帮助。

标签: sql-server select max subquery


【解决方案1】:

虽然您的问题有些不清楚。我会根据你的要求给你一个例子

获取所有 Id = 到 Max Id 的行

SELECT
   b.*
FROM
   (SELECT MAX(Id) AS [MaxId] From MyTable) a INNER JOIN
   MyTable b ON a.MaxId = b.Id

还有其他方法可以做到这一点,但这会为您提供表中所有 ID 等于表中最大 ID 的行。如果我误解了你的意思,我可以定制一个更具体的例子。

-本

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2019-05-02
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多