Sql 添加标记列的最大值和最小值的列

Sql 添加标记列的最大值和最小值的列,sql,sql-server,max,case,min,Sql,Sql Server,Max,Case,Min,我想添加一个额外的列,其中将显示每个组(ID)的最小值和最大值。 下面是表格的外观: 从mytable中选择ID、值 ID VALUE 1 4 1 1 1 7 2 2 2 5 3 7 3 3 以下是我想要得到的结果: ID VALUE min_max_values 1 4 NULL 1 1 min 1 7 max 2 2 min 2 5 max 3 7 max 3 3 min 4 1 both 5 2 min 5 3 max 提前感谢您的帮助 您可以使用窗口函数和大小写表达式: select

我想添加一个额外的列,其中将显示每个组(ID)的最小值和最大值。 下面是表格的外观:

从mytable中选择ID、值

ID VALUE
1 4
1 1
1 7
2 2
2 5
3 7
3 3
以下是我想要得到的结果:

ID VALUE min_max_values
1 4 NULL
1 1 min
1 7 max
2 2 min
2 5 max
3 7 max
3 3 min
4 1 both
5 2 min
5 3 max

提前感谢您的帮助

您可以使用窗口函数和
大小写
表达式:

select id, value,
    case
        when value = min_value and min_value = max_value then 'both'
        when value = min_value then 'min'
        when value = max_value then 'max'
    end as min_max_values
from (
    select t.*,
        min(value) over(partition by id) as min_value,
        max(value) over(partition by id) as max_value
    from mytable t
) t

子查询不是严格必需的,我们可以在外部查询中直接使用窗口
min()
max()
。它只是为了避免在外部查询中重复键入窗口函数表达式。

请告诉我们您的尝试。非常感谢!