[英]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.