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