[英]Select max value of a row and column name of the max value as two columns in SQL Server
我有一张桌子,看起来像:
Area Request Assign Complete
-----------------------------------------------
area1 66 0 33
area2 33 80 0
area3 72 20 9
area4 3 27 89
根据上表中行的最大值显示最大值和颜色
所需的输出:
Area Max_value Color
-------------------------------
area1 66 Red
area2 80 Blue
area3 72 Red
area4 89 Green
试试下面的SELECT
。
SELECT AREA,
CASE WHEN Request > Assign AND Request > Complete THEN Request
WHEN Assign > Request AND Assign > Complete THEN Request
WHEN Complete > Request AND Complete > Assign THEN Request
ELSE NULL END AS Max_Value,
CASE WHEN Request > Assign AND Request > Complete THEN 'Red'
WHEN Assign > Request AND Assign > Complete THEN 'Blue'
WHEN Complete > Request AND Complete > Assign THEN 'Green'
ELSE NULL END AS Color
FROM YourTable
如下使用UNION ALL或UNION:
SELECT
Area,
Request AS MaxValue,
'Red' AS Color
FROM TableName
WHERE Request>Assign AND Request>Complete
UNION ALL
SELECT
Area,
Assign AS MaxValue,
'Blue' AS Color
FROM TableName
WHERE Assign>Request AND Assign>Complete
UNION ALL
SELECT
Area,
Complete AS MaxValue,
'Green' AS Color
FROM TableName
WHERE Complete>Request AND Complete>Assign
您可以使用cross apply
来找到最大值。 然后使用case
表达式查找颜色
select
Area, maxVal
, Color = case
when maxVal = Request then 'Red'
when maxVal = Assign then 'Blue'
else 'Green'
end
from
myTable
cross apply (select maxVal = max(v) from (values (Request), (Assign), (Complete)) t(v)) q
请尝试此解决方案-
SELECT * , CASE WHEN MaxValue = Request THEN 'Red'
WHEN MaxValue = Assign THEN 'Blue'
WHEN MaxValue = Complete THEN 'Green'
END Color
FROM ty
CROSS APPLY
(
SELECT Max(v) MaxValue
FROM
(
VALUES (Request) , (Assign), (Complete)
) as value(v)
)u
输出值
Area Request Assign Complete MaxValue Color
---------- ----------- ----------- ----------- ----------- -----
area1 66 0 33 66 Red
area2 33 80 0 80 Blue
area3 72 20 9 72 Red
area4 3 27 89 89 Green
(4 rows affected)
尝试这个:
select Area,
case when Request > Assign then
case when Request > Complete then Request
else Complete end
else
case when Assign > Complete then Assign
else Complete END
end [Max_value],
case when Request > Assign then
case when Request > Complete then 'Red'
else 'Green' end
else
case when Assign > Complete then 'Blue'
else 'Green' END
end [Color]
from MY_TABLE
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.