I have a table: enter image description here

I need to get below result: enter image description here

代码应 Select "数字"值为最小的行. 如果存在"UNIQUE_1",其中"UNIQUE_2"!=MIN,则 Select "Numbers"值为Max的列.

当前代码:

select  T1.Unique_1, 
    T1.Unique_2,
    Case WHEN  T2.MIN_Number is not NULL then  T2.MIN_Number ELSE T3.MAX_Number end as Number from Table_1 as T1 LEFT JOIN ( 
SELECT  Unique_1,
        MIN(Number) as MIN_Number
From Table_1 WHERE Unique_2 = 'MIN' 
GROUP BY Unique_1) AS T2 ON  T1.Unique_1 = T2.Unique_1 LEFT JOIN( 
SELECT  Unique_1, 
        MAX(Number) as MAX_Number 
From Table_1 WHERE Unique_2 = 'MAX' 
GROUP BY Unique_1) AS T3 ON  T1.Unique_1 = T3.Unique_1 

希望我已经清楚地描述了这个问题.

另外,谢谢您的帮助和建议.

推荐答案

您可以使用条件聚合来完成此操作:

SELECT unique_1, CASE WHEN minVal IS NOT NULL THEN 'MIN' ELSE 'MAX' END AS 'unique_2',
       COALESCE(minVal, maxVal) as number
FROM (
  SELECT unique_1, MIN(CASE WHEN unique_2 = 'MIN' THEN Number END) AS minVal,
                   MAX(CASE WHEN unique_2 = 'MAX' THEN Number END) AS maxVal
  FROM mytable
  group by unique_1
) AS s

结果:

unique_1    unique_2    number
222         MIN         1
333         MIN         1
444         MAX         3

在MySQL here上测试的演示

Sql相关问答推荐

使用group by后我的平均输出不是我想要的

Postgresql:从jsons数组到单个id索引的json

将SEMI JOIN、ANTI JOIN转换为非连接SQL

将主表与历史表连接以获取主表的当前汇率以及历史表中的上一个和最后一个汇率

如何根据特定的内部json元素值过滤postgres查询结果?

如何更新SQLite数据库中的表?

SQL:计算与另一列中给定值互斥的匹配项

不同表达方式时的大小写

如何在presto中映射id与名称

基于另一个(SAS、SQL)中的值更新列

根据是否出现过零来筛选数据(跨多行)

如何在多列上编写具有不同条件的查询?

如何根据几个条件 Select 值:如果满足一个范围的SUM,则对另一个范围求和

从重复值中获取最新值

STContains、STIntersections和STWithin返回错误的地理结果

如何在android房间中进行多个加入

获取多个开始-结束时间戳集之间经过的时间

SQL Server - 判断 ids 层次 struct 中的整数 (id)

如何根据某个值在where子句中添加某个条件

Django only() 和 values() 不适用于 prefetch_related()