sql - SQL 返回值 0 以防万一
问题描述
我的查询
select count(*) CountByGroup, IncomeGroup
from table1
cross apply (values(
case
when try_convert(numeric(20), hh.HouseholdIncome) between 0 and 4012 then 'Limit 2 - $4,012'
when try_convert(numeric(20), hh.HouseholdIncome) between 4013 and 4956 then 'Limit 3 - $4,956'
end)
) x(IncomeGroup)
并返回
CountByGroup IncomeGroup
17 Limit 2 - $4,012
不确定如何在组限制 3 - $4,956 上获得返回值 0,因此如果组限制 3 - $4,956 上没有值,它应该看起来像
CountByGroup IncomeGroup
17 Limit 2 - $4,012
0 Limit 3 - $4,956
谢谢你。
解决方案
使用派生表和LEFT JOIN
:
select count(*) as CountByGroup, v.IncomeGroup
from (values (0, 4012, 'Limit 2 - $4,012'),
(4013, 4956, 'Limit 3 - $4,956')
) v(lo, hi, IncomeGroup) left join
table1 t1
on try_convert(numeric(20), t1.HouseholdIncome) between v.lo and v.hi
group by v.IncomeGroup
推荐阅读
- ruby-on-rails - Rails 6 Active Storage image_processing gem 问题
- angular - 如何使用事件发射器触发子组件和父组件中的函数?
- java - 如何在eclipse上自动将jar文件添加到每个新项目?
- sql - 如何将“总计”标签添加到数字列?
- python - 对单个句子进行预测时,收到错误“模型的特征数必须与输入匹配”。
- ios - 从图像中检测文本并获取关键字的矩形
- node.js - Typescript lambda中不同包之间的代码重用
- django-rest-framework - Traefik - 当“offset = 1”是第一个查询参数时为404
- html - href链接不可点击
- css - 使用 CSS 移除移动设备的上边距