Database 从表和group by中获取最大值,列具有不同顺序的逗号分隔值或具有更多值

Database 从表和group by中获取最大值,列具有不同顺序的逗号分隔值或具有更多值,database,sybase,sap-ase,Database,Sybase,Sap Ase,我有一个这样的表和数据 CREATE TABLE temp ( `name` varchar(20), `ids` varchar(20), `value1` int, `value2` int ); INSERT INTO temp(`name`,`ids`, `value1`, `value2`) values ('A', '1,2', 10, 11), ('A', '2,1', 12, 100), ('A', '1,2,3', 20, 1), (

我有一个这样的表和数据

CREATE TABLE temp (
  `name` varchar(20),
  `ids` varchar(20),
  `value1` int,
   `value2` int
);

INSERT INTO temp(`name`,`ids`, `value1`, `value2`) values
  ('A', '1,2', 10, 11),
  ('A', '2,1', 12, 100),
   ('A', '1,2,3', 20, 1),
     ('B', '6', 30, 10)
我需要通过Nameids获得最大值

我使用以下查询来获取最大值

select name, ids, max(value1) as value1, max(value2) as value2 
from temp
group by name,ids

该问题已标记为Sybase ASE,但“创建表”和“插入”命令在ASE中无效,因此不确定这是由于错误的标记还是错误的“创建表”和“插入”命令引起的。。。因此,假设这是针对Sybase ASE数据库:

我假设所需的输出是显示
value=max(value)
的行

首先,我们将设置测试用例:

create table mytab
(name  varchar(20)
,ids   varchar(20)
,value int)
go

insert into mytab (name,ids,value) values ('A', '1,2'  , 10)
insert into mytab (name,ids,value) values ('A', '2,1'  , 12)
insert into mytab (name,ids,value) values ('A', '1,2,3', 20)
insert into mytab (name,ids,value) values ('B', '6'    , 30)
go
这里有一个可能的解决方案:

select t.name, t.ids, t.value
from   mytab t
join   (select name,max(value) as maxvalue from mytab group by name) dt
on     t.name  = dt.name
and    t.value = dt.maxvalue
order by t.name
go

 name                 ids                  value
 -------------------- -------------------- -----------
 A                    1,2,3                         20
 B                    6                             30
子查询/派生表为每个唯一的
名称
提供了
max(value)
。然后,主查询将这些
name/max(value)
对连接回主表,以提供所需的行(即,
value=max(value)


在ASE 15.7 SP138上测试。

如果我有第三列,并且需要从中找到最大值,该怎么办?我不确定我是否理解您的问题;我建议你接受这个答案,尝试修改它以适应你的新需求,如果你无法解决新问题,那么开始一个新问题(包括样本数据、你尝试过的查询、实际和期望的输出);同时,如果这个答案(以上)解决了你原来的问题,那么就考虑复习。