Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SQL:根据第一列取两列的最大值

SQL:根据第一列取两列的最大值
EN

Stack Overflow用户
提问于 2016-01-10 14:02:54
回答 2查看 95关注 0票数 1

我有三列正在返回,第一列是系统生成的" ID“列,第二列是仓库,第三列是仓库在ID上显示的总数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
id  WH  Count   
TRL0520841  6   2   Takes the greatest WH based on the greatest QTY 
TRL0520841  2   2   
TRL0520841  5   1   
TRL0525482  6   15  Takes the greatest WH based on the greatest QTY
TRL0525482  2   9   

换句话说,TRL0520841的结果是6,TRL0525482的结果是6

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    select *
from (select ar2.trlr_id,
            to_number(ar2.area) areanum,
            ar2.con
       from (select ar1.trlr_id,
                    ar1.area,
                    count(ar1.area) con
               from (SELECT t.trlr_id,
                            pm.prtnum,
                            case when pm.prtfam like 'WH%' then substr(pm.prtfam, 3, 1)
                                 else '6'
                            end area
                       FROM rcvtrk rt,
                            trlr t,
                            rcvlin rl,
                            prtftp pf,
                            prtftp_dtl pfd,
                            prtmst pm
                      where t.trlr_id = rt.trlr_id
                        and t.trlr_stat not in ('D', 'C')
                        and rl.trknum = rt.trknum
                        and rl.prtnum = pf.prtnum
                        and pfd.prtnum = pf.prtnum
                        and pfd.ftpcod = pf.ftpcod
                        and pf.defftp_flg = '1'
                        and pfd.uomcod = 'UL'
                        and pfd.wh_id = 'CP01'
                        AND pf.wh_id = 'CP01'
                        and pf.prtnum = pm.prtnum
                        and t.yard_loc is not null
                        and t.trlr_cod = 'RCV'
                        and t.yard_loc_wh_id = 'CP01'
                      group by t.trlr_id,
                            pm.prtnum,
                            pm.prtfam) ar1
              group by ar1.trlr_id,
                    ar1.area) ar2) ar3;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-10 15:24:07

如果我正确理解这个问题,您可以使用ROW_NUMBER()来确定您希望在最终结果中保留哪些行。注意,您可能希望按此计算顺序包括其他列作为领带断线。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT
      ar3.trlr_id
    , ar3.areanum
    , ar3.con
FROM (
      SELECT
            ar2.trlr_id
          , ar2.areanum
          , ar2.con
          , ROW_NUMBER() OVER(PARTITION BY ar2.trlr_id ORDER BY ar2.areanum, ar2.con DESC) as rn
      FROM (
            SELECT
                  ar1.trlr_id
                , ar1.areanum
                , COUNT(ar1.areanum) con
            FROM (
                  SELECT
                        t.trlr_id
                      , pm.prtnum
                      , to_number(CASE
                              WHEN pm.prtfam LIKE 'WH%' THEN substr(pm.prtfam, 3, 1)
                              ELSE '6'
                        END) areanum
                  FROM rcvtrk rt
                     , trlr t
                     , rcvlin rl
                     , prtftp pf
                     , prtftp_dtl pfd
                     , prtmst pm
                  WHERE t.trlr_id = rt.trlr_id
                        AND t.trlr_stat NOT IN ('D', 'C')
                        AND rl.trknum = rt.trknum
                        AND rl.prtnum = pf.prtnum
                        AND pfd.prtnum = pf.prtnum
                        AND pfd.ftpcod = pf.ftpcod
                        AND pf.defftp_flg = '1'
                        AND pfd.uomcod = 'UL'
                        AND pfd.wh_id = 'CP01'
                        AND pf.wh_id = 'CP01'
                        AND pf.prtnum = pm.prtnum
                        AND t.yard_loc IS NOT NULL
                        AND t.trlr_cod = 'RCV'
                        AND t.yard_loc_wh_id = 'CP01'
                  GROUP BY
                        t.trlr_id
                      , pm.prtnum
                      , pm.prtfam
                  ) ar1
            GROUP BY
                  ar1.trlr_id
                , ar1.areanum
            ) ar2
      ) ar3
WHERE ar3.rn = 1
;

顺便说一句: ANSI连接语法是很久以前才采用的。是时候停止对所有联接使用where子句了。像这样(未经测试):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT
      *
FROM rcvtrk rt
      INNER JOIN trlr t ON rt.trlr_id = t.trlr_id
      INNER JOIN rcvlin rl ON rt.trknum = rl.trknum
      INNER JOIN prtftp pf ON rl.prtnum = pf.prtnum
      INNER JOIN prtftp_dtl pfd ON pf.prtnum = pfd.prtnum
                  AND pf.ftpcod = pfd.ftpcod
      INNER JOIN prtmst pm ON pf.prtnum = pm.prtnum
WHERE t.trlr_stat NOT IN ('D', 'C')
      AND t.yard_loc IS NOT NULL
      AND t.trlr_cod = 'RCV'
      AND t.yard_loc_wh_id = 'CP01'
      AND pf.defftp_flg = '1'
      AND pf.wh_id = 'CP01'
      AND pfd.uomcod = 'UL'
      AND pfd.wh_id = 'CP01'
票数 0
EN

Stack Overflow用户

发布于 2016-01-10 15:28:53

假设您的列名是'id‘、'WH’和'Count',并且表名是'dbo.Warehouse',那么您需要的查询是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT Warehouse.id, WH, Count
FROM dbo.Warehouse as Warehouse
INNER JOIN
    (SELECT id, MAX(Count) AS MaxCount
    FROM dbo.Warehouse
    GROUP BY id) as groupedWH 
ON Warehouse.id = groupedWH.id
AND Count = groupedWH.MaxCount

对于具有重复最大值的in,这将返回所有这样的行(例如,对于示例中的TRL0520841,将返回计数=2的两行);您需要决定如何处理这些行。

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

https://stackoverflow.com/questions/34711299

复制
相关文章
在一个df里,怎么根据两列去把另外两列合并呢?
前几天在Python最强王者交流群【群除我佬】问了一个Pandas处理的问题,提问截图如下:
Python进阶者
2023/03/02
1.6K0
在一个df里,怎么根据两列去把另外两列合并呢?
盘点使用Pandas解决问题:对比两列数据取最大值的5个方法
前几天在Python星耀交流群有个叫【iLost】的粉丝问了一个关于使用pandas解决两列数据对比的问题,这里拿出来给大家分享下,一起学习。
Python进阶者
2022/04/12
4.3K0
盘点使用Pandas解决问题:对比两列数据取最大值的5个方法
大战SQL列类型及其列属性
最近,在看一本《原则》的书籍,是写的一位美国人投资史。其中谈到和他的创业伙伴关系出现裂缝时,我们会怎样做?
小Bob来啦
2020/12/08
1.3K0
大战SQL列类型及其列属性
sql列转行
--用于:交叉表的列数是不确定的 declare @sql varchar(8000)
Java架构师必看
2021/03/22
9460
javacsv 根据列名获取不到第一列问题
发现有一列通过get(String columnName)方式获取不到,其他列都可以,而且名称反复核对都OK。
明明如月学长
2021/08/27
1.1K0
SQL 将多列的数据转到一列
如题。假设我们要把 emp 表中的 ename、job 和 sal 字段的值整合到一列中,每个员工的数据(按照 ename -> job -> sal 的顺序展示)是紧挨在一块,员工之间使用空行隔开。
白日梦想家
2020/09/08
5.5K0
python合并两列
需要把数字类型转化为字符串类型,再进行连接 第一种 df1 = pd.DataFrame({'Year': ['2014', '2015'], 'quarter': ['q1', 'q2']}) df1['period'] = df[['Year', 'quarter']].apply(lambda x: ''.join(x), axis=1) df1 Year quarter period 0 2014 q1 2014q1 1 2015 q2 2015q2 第二
用户1359560
2018/08/27
3.8K0
SQL练习之两个列值的交换
SELECT * FROM dbo.test2 现在我们将Province列值和Company列值互换,代码如下: UPDATE test2 SET Company=Province, Provin
郑小超.
2018/01/24
3.6K0
SQL练习之两个列值的交换
Ext根据条件显示隐藏列
  写在ExtonReady函数里面,并在表格成功渲染之后,可以添加判断是否隐藏或者显示某一列
河岸飞流
2019/08/09
2.7K0
用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
数据库中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
全栈程序员站长
2022/07/09
1.7K0
根据某列相同元素求和
下面是一个需要计算相同基因的exon的长度的文件,即根据相同的基因,先计算基因的起点到终点的距离,再对相同的基因的的exon距离求和
生信编程日常
2020/06/11
9980
根据某列相同元素求和
使用EXCLE表格,有相同列,取某一列的值
如图,我有两列MAC地址表,然后需要把F列的值取值到D列,可以使用公式:=VLOOKUP(A1,$E$1:$F$44,2,0)进行处理数据。A1代表以哪一列为基础取值参考,$E$1:$F$44代表查找对比范围。
Tacc
2022/01/11
4.4K0
使用EXCLE表格,有相同列,取某一列的值
2.布局解决方案 两列、三列、多列、不定宽+一列自适应<6>
和上面的解决方案是一样的,自己动脑筋哦 下面的overflow的方式 display:table和flex大家自己练习。
河湾欢儿
2018/09/06
1.7K0
实战演练:通过伪列、虚拟列实现SQL优化
本文是技术同仁 蔡亮 在日常工作中通过试验,总结出的一些技巧方案,供大家参考学习。在此,感谢蔡亮的供稿分享,希望大家也可以后续将学习工作中遇到的问题,解决方法分享给大家。
数据和云
2018/07/27
1.8K0
实战演练:通过伪列、虚拟列实现SQL优化
SQL行转列、列转行
这个主题还是比较常见的,行转列主要适用于对数据作聚合统计,如统计某类目的商品在某个时间区间的销售情况。列转行问题同样也很常见。
全栈程序员站长
2022/07/21
1.6K0
SQL行转列、列转行
Hadoop两列数据的排序
如果利用mapreduce过程的自动排序,只能实现根据第一列排序,现在需要自定义一个继承自WritableComparable接口的类,用该类作为key,就可以利用mapreduce过程的自动排序了。代码如下:
星哥玩云
2022/06/30
1.7K0
根据数据源字段动态设置报表中的列数量以及列宽度
在报表系统中,我们通常会有这样的需求,就是由用户来决定报表中需要显示的数据,比如数据源中共有八列数据,用户可以自己选择在报表中显示哪些列,并且能够自动调整列的宽度,已铺满整个页面。本文就讲解一下Act
葡萄城控件
2018/01/10
4.9K0
根据数据源字段动态设置报表中的列数量以及列宽度
随机日志:两列显示
  看到别人的随机日志都是现实两列,我这一直显示一列,一是因为显示一列不好看,二是提供的信息量太低。因此改成两列还是很有必要的,于是自己写了些css样式,添加到主题的style.css文件的最下面。
the5fire
2019/02/28
9750
VBA:根据指定列删除重复行
文章背景:在工作生活中,有时需要进行删除重复行的操作。比如样品测试时,难免存在复测数据,一般需要删除第一行数据,保留后一行的数据。
Exploring
2022/09/20
3.2K0
点击加载更多

相似问题

SQL根据两列的最大值选择所有列

22

按两列分组,取和,然后取最大值。

60

根据SQL中另一列的最大值选择两列

40

按两列分组,取第三列的最大值

119

取sql表中某列的最大值

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文