尽管我已经为我所寻找的东西提出了几个可行的解决方案,但我想知道是否有一种更精简的方法来确定单行中3列中哪一列包含最小的/min值。以下是我正在使用的数据示例:
帐号 |
| 自上次销售以来的天数自上一次收费以来的天数 | |||
---|---|---|---|---|---|
YO502 | NULL | NULL | |||
YO525 | 空 | 2303 | 2303 | 5917 | |
ZE100 | 1 | 190 | 449 | 707 | |
ZE100 | 2 | 160 | 279 | >td>615||
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