如何解决SQL 选择列有一定长度和最大值的行
Column_A | Column_B | Column_C |
---|---|---|
值 1 | 111A001 | 某个值 1 |
值 1 | 111A002 | 某些值 2 |
值 2 | 112A001 | 某些值 3 |
值 2 | 112A002 | 某些值 4 |
值 2 | 112A003 | 某些值 5 |
值 2 | 112A004 | 某些值 6 |
值 3 | 115A001 | 某些值 7 |
值 3 | 115A002 | 一些值 8 |
值 3 | 115A003 | 某些值 9 |
值 4 | 117A | 一些值 10 |
大家好,
从上表中,我想得到如下输出:
Column_A | Column_B | Column_C |
---|---|---|
值 1 | 111A002 | 某个值 2 |
值 2 | 112A004 | 某些值 6 |
值 3 | 115A003 | 某些值 9 |
未选择值 4,因为在“A”之后的 Column_B 中没有任何内容或没有 3 位数。正如您在顶部表格中看到的,值 1 在列 B、111A001 和 111A002 中有 2 个值。我要选择 111A002。值 2 在 B 列有 4 个值,112A001 - 112A004,我只想选择 112A004。所以关键是我想从 column_A 中的每个值中选择最高值(在 column_b 中)。
我尝试使用 max(column_B) 但它只显示值 4、117A、某些值 10。
如果标题不正确,我深表歉意。
解决方法
也许你正在寻找这样的东西:
select
Column_A,max(Column_B) as Column_B,max(Column_C) as Column_C
from d
where length(substring(Column_B,locate('A',Column_B) + 1)) >= 3
group by Column_A
,
select column_a,max(column_b),max(column_c) /* Depends if you want max of column_c or column c value corresponding to the max of column_b - Question wasn't very clear */
from table
where column_b not like '%A___' /* Because you said - "Value 4 is not selected because in Column_B after 'A' there is nothing or it didn't have 3 digit." */
group by column_a
如果您确定,您可以使用它,“A”之后总会有 3 位数字,如果“A”之前的 3 位数字是 ___A%(这也可能是正确的,根据您发布的数据)
%A%
可能不适合您,因为它还会考虑以“A”结尾的字符串;而你在“A”之后需要一些东西
如果您确定字符串将包含 X 个字符,则最好使用 length(column_b) = 7
之类的函数。
不确定您使用的是哪个数据库。所以功能可能不同。一些数据库有 CHAR_LENGTH() 或 LEN()
编辑:只是澄清 ___ 是 3 个下划线。想澄清一下,因为它看起来像一条大线
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。