You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL列级最值纵向展示需求:基于@tbl表实现行列转换查询

没问题,我来帮你搞定这个纵向展示列最值的需求!

实现纵向展示列的最值(格式1)

针对你给出的测试表和数据,我们可以通过两种方式实现纵向输出每一列的列名、最小值和最大值:

方法1:用UNION ALL拆分列统计(直观易读)

这种方式适合列数不多的场景,直接为每一列单独统计最值,再合并结果行:

declare @tbl table(ind1 float, ind2 float,ind3 float )
insert into @tbl values (10,14,19 ),(11,22,13 ),(12,13,15 )

-- 格式1:纵向展示列名、最小值、最大值
SELECT 
    'ind1' as col_name,
    MIN(ind1) as min_value,
    MAX(ind1) as max_value
FROM @tbl
UNION ALL
SELECT 
    'ind2' as col_name,
    MIN(ind2) as min_value,
    MAX(ind2) as max_value
FROM @tbl
UNION ALL
SELECT 
    'ind3' as col_name,
    MIN(ind3) as min_value,
    MAX(ind3) as max_value
FROM @tbl

执行后会得到你预期的结果:

col_namemin_valuemax_value
ind11012
ind21322
ind31319

方法2:用UNPIVOT转置后聚合(适合多列场景)

如果后续表的列数增加,重复写UNION ALL会很繁琐,这种方法先把横向列转成纵向键值对,再分组统计:

declare @tbl table(ind1 float, ind2 float,ind3 float )
insert into @tbl values (10,14,19 ),(11,22,13 ),(12,13,15 )

SELECT
    col_name,
    MIN(value) as min_value,
    MAX(value) as max_value
FROM (
    SELECT ind1, ind2, ind3 FROM @tbl
) t
UNPIVOT (
    value FOR col_name IN (ind1, ind2, ind3)
) up
GROUP BY col_name

最终输出结果和方法1完全一致,且后续新增列时只需要修改UNPIVOT中的列名列表即可。

内容的提问来源于stack exchange,提问作者hieko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:30:14