【问题标题】:SQL: Adding another MAX field to existing MAX Date QuerySQL:向现有 MAX 日期查询添加另一个 MAX 字段
【发布时间】:2021-11-01 13:12:51
【问题描述】:

我有一个现有查询,该查询正在为该特定项目的每条记录获取 exdt 字段的最大日期。我正在尝试向 sqn 字段添加额外的 MAX 计算,本质上是同时选择具有最高 exdt 和 sqn 字段的记录。我尝试在 WHERE 中添加一个额外的 "AND (a.sqn = (SELECT MAX(sqn) ,它似乎不喜欢多选。

SELECT a.item, a.cpc, dt.dsc, a.exdt, a.sqn

FROM     dbo.ct AS a INNER JOIN dbo.dt ON a.cpc = dt.cpc

WHERE (a.exdt = (SELECT MAX(exdt) AS exdt FROM  dbo.ct AS a 

任何帮助将不胜感激!

谢谢。

【问题讨论】:

  • 语法错误。计数()。同一个号码?
  • 你知道ANDOR的区别吗?你可以是男性和女性吗?

标签: sql max


【解决方案1】:

获取具有两个字段最大值的记录的脚本如下

SELECT a.item, a.cpc, dt.dsc, a.exdt, a.sqn
FROM     dbo.ct AS a INNER JOIN dbo.dt ON a.cpc = dt.cpc
WHERE 
a.exdt = (SELECT MAX(exdt) AS exdt FROM  dbo.ct )
and 
a.sqn= (SELECT MAX(sqn) AS exdt FROM  dbo.ct)  

你也可以使用CTE如下

with 
cte_principal as
(SELECT a.item, a.cpc, dt.dsc, a.exdt, a.sqn
 FROM     dbo.ct AS a INNER JOIN dbo.dt ON a.cpc = dt.cpc),
cte_max_exdt as (SELECT MAX(exdt) AS exdt FROM  dbo.ct),
cte_max_sqn as (SELECT MAX(sqn) AS exdt FROM  dbo.ct)

select p.* from cte_principal p  
inner join cte_max_exdt  on p.exdt =cte_max_exdt.exdt
inner join cte_max_sqn  pn p.sqn=cte_max_sqn.sqn

【讨论】:

  • 第一个效果很好。谢谢
【解决方案2】:

也许您需要子查询来查找每个项目的最大日期。 就我而言,这是 ct_max_date 之后,您通过 max_date 和 item_Id 加入该子查询

SELECT a.item, a.cpc, dt.dsc, a.exdt, a.sqn

FROM     dbo.ct AS a 
INNER JOIN dbo.dt ON a.cpc = dt.cpc
inner join (
select max(exdt) as max_date, ct.cpc
from dbo.ct
group by ct.dt
) as ct_max_date on a.cpc=ct_max_date.cpc and a.exdt=ct_max_date.max_date

【讨论】:

    猜你喜欢
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    相关资源
    最近更新 更多