sql - 如何使用 unpivot 函数在其他列中查找最小值来忽略字符串值
问题描述
我有一张看起来像这样的桌子
Limit
目标是在列(Limit1、Limit2、Limit3...等)中找到一个最小值。
为此,我正在使用UNPIVOT
函数。
但问题是有些值是空字符串。结果,最小值变为空字符串。
declare @TempTable2 table (ID int, limit1 varchar(50),limit2 varchar(50),limit3 varchar(50),limit4 varchar(50),limit5 varchar(50) )
insert into @TempTable2 values (1,'1000','1000','3000',NULL, NULL)
,(2,'2000','4000','3000','', NULL)
--select * from @TempTable2
Select ID,
min(Amount) as TheMin
from @TempTable2
unpivot (Amount for AmountCol in (Limit1,Limit2,Limit3,Limit4,Limit5)) as unpvt
group by ID
UNPIVOT
那么在使用函数时如何忽略字符串值呢?
我希望我的结果是这样的:
ID TheMin
1 1000
2 2000
我尝试使用NULLIF
但UNPIVOT
不接受。谢谢
解决方案
只是另一种选择是NullIf()
例子
Select ID,
min(nullif(Amount,'')) as TheMin
from @TempTable2
unpivot (Amount for AmountCol in (Limit1,Limit2,Limit3,Limit4,Limit5)) as unpvt
group by ID
退货
ID TheMin
1 1000
2 2000
推荐阅读
- r - 列中的折叠功能
- excel - 将单元格转换为变体数组
- android - 即使在android studio中匹配父级,表格也太宽了
- c - 如何有选择地将二维数组的列或行传递给函数?
- networking - 403 Forbidden on a specific page,但仍能正确加载?
- xslt - XSLT - 将更新“应用”到另一个文件
- javascript - Mozilla Rhino JavaScript 引擎编译失败(无法在不同目录中找到文件)
- ruby-on-rails - 如何编写过滤评论的解决方案?
- mongodb - 如果在数组中找不到匹配项,则返回第一个元素
- kubernetes-helm - 带有多个命令的 helm chart init 容器