簡體   English   中英

返回連續最大值的列名 SQL 服務器

[英]Return column name of max value in a row SQL Server

初始表:

    Name    Job1    Job2     Job3     Job4     Job5     Job6
--------------------------------------------------------------
    A        34       0        66      0        0       0
    B        33       33       33      1        0       0
    C        100      0         0      0        0       0
    D        50       0         0      0        0       50

Output 表:

    Name    Max           Job1     Job2     Job3     Job4     Job5     Job6
----------------------------------------------------------------------------
    A       Job3            34       0        66      0        0       0
    B       Job1;Job2;Job3  33       33       33      1        0       0
    C       Job1            100      0         0      0        0       0
    D       Job1;Job6       50       0         0      0        0       50

我需要在 SQL 服務器中獲取具有最大值的行的作業名稱(列名)。 如果這樣做,是否有其他方法,因為 SQL 中沒有“最大的”function? (因為我至少有 50 個工作)

您可以使用apply和 window 函數:

select t.*, max_cols
from t cross apply
     (select string_agg(colname, ';') as max_cols
      from (select top (1) with ties v.colname
            from (values ('Job1', t.job1), ('Job2', t.job2), . . . 
                 ) v(colname, job)
            order by v.job desc
           ) v
     ) v;

也就是說,您可能應該修復您的數據 model。 具有相同信息的多個列通常表示數據不足 model。 每個name / job組合應該是另一個表中的單獨行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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