簡體   English   中英

SQL 中具有最大值的列名

[英]Column name with max value in SQL

我有以下示例數據集:

在此處輸入圖像描述

我想獲取具有最大值的列的名稱,在本例中為“C”。 MAX不會返回所需的結果,因為它不能與多列一起使用。

SELECT MAX(A,B,C,D)
FROM TABLE

有人可以幫忙嗎。

一種可能的方法是使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM