![](/img/trans.png)
[英]Select max value of a row and column name of the max value as two columns in SQL Server
[英]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.