我有以下查询
SELECT Cod ,
MIN(Id) AS id_Min,
MAX(Id) AS id_Max,
-- retrieve value in the middle,
COUNT(*) AS Tot
FROM Table a ( NOLOCK )
GROUP BY Cod
HAVING COUNT(*)=3
如何像获取最小值和最大值一样检索最小值和最大值之间的值?
示例
Cod | Id
Stack 10
Stack 15
Stack 11
Overflow 100
Overflow 120
Overflow 15
所需的输出
Cod | Min | Value_In_The_Middle | Max
Stack 10 11 15
Overflow 15 100 120
最佳答案
我还没有测试过,但我认为这会起作用
SELECT Cod ,
MIN(Id) AS id__Min,
MAX(Id) AS id_Max,
SUM(ID)-MAX(Id)-MIN(Id) as id_Middle,
COUNT(*) AS Tot
FROM Table a ( NOLOCK )
GROUP BY Cod
HAVING COUNT(*)=3
此技巧仅在您有 3 个值且 SUM() 不会溢出时才有效(如评论中指出的 Bogdan Sahlean )。
关于sql - 分组依据检索 3 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10206934/