一千萬個為什麽

搜索

在帶條件的列中查找最大值(0表示存在0的最大值)

列的值為'00','01','02','03',...
我想找出每個Name的最大值。但是,如果有'00'那麽存在 最大值應該是'00'。如果不是,max是最大值。

原始</強>

Name Value
Tom | 00
Tom | 01
Tom | 02
Jane | 01
Jane | 02
Jane | 03
Jack | 00
Jack | 01

結果</強>

Name Value
Tom | 00
Jane | 03
Jack | 00

'如果'聲明會很好,但我認為必須有更簡單的方法。

最佳答案

感謝Soukai在我的另一篇文章中發現了一個有趣的解決方案。

Is there anything possible idea of 'cyclic arithmetic operation' for some specific data type?

Select Name, RIGHT('00' + CONVERT(VARCHAR, (max((convert(int, Value) - 1) & 255) + 1) & 255), 2) as Value from Table;

00 01 02 03 04 ... 99 : 00 to be max and for others, max is max

↓'cyclic decreasing' 1

255 00 01 02 03 ... 98 : find 255 as max which was 00 originally, if not, still max is max

↓'cyclic increasing' 1

00 01 02 03 04 ... 99 : Done.

轉載註明原文: 在帶條件的列中查找最大值(0表示存在0的最大值)