相关疑难解决方法(0)

从多列中选择最小值的最佳方法是什么?

给出SQL Server 2005中的下表:

ID   Col1   Col2   Col3
--   ----   ----   ----
1       3     34     76  
2      32    976     24
3       7    235      3
4     245      1    792
Run Code Online (Sandbox Code Playgroud)

编写产生以下结果的查询的最佳方法是什么(即产生最终列的查询 - 包含每行的Col1,Col2和Col3中的minium值的)?

ID   Col1   Col2   Col3  TheMin
--   ----   ----   ----  ------
1       3     34     76       3
2      32    976     24      24
3       7    235      3       3
4     245      1    792       1
Run Code Online (Sandbox Code Playgroud)

更新:

为了澄清(正如我在演讲中所说),在真实场景中,数据库已正确规范化.这些"数组"列不在实际表中,而是在报表中所需的结果集中.新要求是报告还需要此MinValue列.我无法更改基础结果集,因此我期待T-SQL获得一个方便的"走出监狱卡".

我尝试了下面提到的CASE方法并且它有效,尽管它有点麻烦.它也比答案中说明的更复杂,因为你需要满足同一行中有两个最小值的事实.

无论如何,我想我会发布我目前的解决方案,鉴于我的限制,它的效果非常好.它使用UNPIVOT运算符:

with cte (ID, Col1, Col2, Col3)
as
(
    select ID, …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005 min

67
推荐指数
9
解决办法
20万
查看次数

SQL标准中最好的和最少的

我的理解是GREATEST()和LEAST()不是SQL标准的一部分,但是很常见.

我想知道,有没有办法克隆GREATEST的功能保持在SQL标准内?

SELECT id, GREATEST(1,2,3,4,5,6,7) AS number FROM table
Run Code Online (Sandbox Code Playgroud)

完全查询:

  SELECT SUBSTR(section,1,2) AS campus, 
           AVG(GREATEST(maximum - enrolled, 0)) AS empty 
    FROM sectionrun 
   WHERE coursenumber = '105' AND subject = 'ENGL' 
GROUP BY campus
Run Code Online (Sandbox Code Playgroud)

sql standards

6
推荐指数
2
解决办法
2万
查看次数

标签 统计

sql ×2

min ×1

sql-server ×1

sql-server-2005 ×1

standards ×1

t-sql ×1