首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从结果中选择最大日期行

从结果中选择最大日期行
EN

Stack Overflow用户
提问于 2010-09-08 21:33:45
回答 1查看 1K关注 0票数 3

使用普及SQL,我得到了一个结果集:

代码语言:javascript
复制
Tp_No     Name        State    Eff_Date     Actual      Billed   
 1006       ABC        TN      2006-07-01     .1          .5
 1006       ABC        TN      2008-02-15     .27         .6
 1006       ABC        TN      2010-09-01     .37         .7
 1022       Widget     TN      2006-07-01     .1          .5
 1022       Widget     TN      2007-02-22     .27         .6
 1022       Widget     TN      2009-01-01     .37         .7
 1022       Widget     TN      2010-11-11     .38         .71

我想要的是每个客户端、公司和州的行,其中日期是MAX:

代码语言:javascript
复制
Tp_No     Name        State    Eff_Date     Actual      Billed 
 1006       ABC        TN      2010-09-01     .37         .7
 1022       Widget     TN      2010-11-11     .38         .71

更困难的是,原始结果集是查询的结果,而不仅仅是来自表的结果。

代码语言:javascript
复制
    select a.tp_no, c.name, a.state, b.eff_date, a.er_rate as 'Actual', b.er_rate as 'Billed' 
from "PR_TSUTA" as a 
left join CL_SUTA as b on(a.tp_no=b.loc_no)
left join CL_MAST as c on(b.loc_no=c.loc_no) 
where c.yn_17 = 'A' and a.er_rate != b.er_rate 
order by a.tp_no

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-08 21:38:29

试试这个:

代码语言:javascript
复制
SELECT
    a.tp_no AS ClientNum,
    c.name AS Company,
    a.state AS State,
    MAX(b.eff_date) AS Date
FROM "PR_TSUTA" AS a 
LEFT JOIN CL_SUTA AS b ON a.tp_no = b.loc_no
LEFT JOIN CL_MAST AS c ON b.loc_no = c.loc_no
WHERE c.yn_17 = 'A' AND a.er_rate != b.er_rate 
GROUP BY a.tp_no, c.name, a.state

如果您还需要Actual和Billed的值,那么应该使用greatest-n-per-group查询。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3668235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档