获取同一行3列之间的MIN值



尽管我已经为我所寻找的东西提出了几个可行的解决方案,但我想知道是否有一种更精简的方法来确定单行中3列中哪一列包含最小的/min值。以下是我正在使用的数据示例:

自上次销售以来的天数>td>615
帐号 工作 自上一次收费以来的天数
YO502 NULL NULL
YO525 2303 2303 5917
ZE100 1 190 449 707
ZE100 2 160 279
ZI402 NULL 2109 2109 NULL

您可以使用APPLY来做一些"内联";unpivot操作,然后获取最小值。我添加了列TypeOfActivity,因为它可能会很方便地了解什么活动以及

多列之间的最小值

SELECT *
FROM YourTable AS A
CROSS APPLY (
SELECT TOP(1) *
FROM (
VALUES 
('Sale',DaysSinceLastSale)
,('Charge',DaysSinceLastCharge)
,('Established',DaysSinceEstablished)
) AS DTA(TypeOfActivity,DaysSinceActivity)
WHERE DaysSinceActivity IS NOT NULL
ORDER BY DaysSinceActivity
) AS B