[英]Column name with max value in SQL
一种可能的方法是使用VALUES
表值构造函数的以下语句:
桌子:
CREATE TABLE Data (A int, B int, C int, D int)
INSERT INTO Data (A, B, C, D) VALUES (50, 100, 400, 200)
陈述:
SELECT d.*, c.*
FROM Data d
CROSS APPLY (
SELECT TOP 1 v.ColumnName, v.ColumnValue
FROM (VALUES
('A', d.A),
('B', d.B),
('C', d.C),
('D', d.D)
) v (ColumnName, ColumnValue)
ORDER BY v.ColumnValue DESC
) c
结果:
A B C D ColumnName ColumnValue
50 100 400 200 C 400
如果表格在一行中有多个max
,您可以使用以下语句:
SELECT d.*, c.*
FROM Data d
CROSS APPLY (
SELECT v.ColumnName, v.ColumnValue, DENSE_RANK() OVER (ORDER BY v.ColumnValue DESC) AS RN
FROM (VALUES
('A', d.A),
('B', d.B),
('C', d.C),
('D', d.D)
) v (ColumnName, ColumnValue)
) c
WHERE c.RN = 1
一种方法是使用 union 和 max:
with cte as( select a as col, 'A' col_name
from Data
union
select b, 'B' col_name
from Data
union
select c, 'C' col_name
from Data
union
select d, 'D' col_name
from Data
) select *
from cte
where col = (select max(col)
from cte);
结果:
| col | col_name |
+-----+----------+
| 400 | C |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.