sql - SQL查询中的老化桶
问题描述
我有一个表,其中包含成员 ID 以及 LM_Conversion_date 和退休日期。我已经设法得到两个日期之间的差异,但现在我想拥有老化的桶并反映那些属于这些桶的会员编号。这是我的表格示例以及我希望如何查看数据,
Member_no LM_Conversion_date Retired_date Date_difference
100026 08/12/2017 31/12/2017 23
100114 31/08/2017 31/08/2017 0
100620 15/09/2017 30/09/2017 15
100726 10/01/2017 31/12/2016 -10
我希望输出是
All negative 0-15 15-30 >30
100726 100114 100026
100620
任何帮助都感激不尽
解决方案
您可以使用条件聚合来做到这一点:
select max(case when grp = '<0' then member_no end) as all_negative,
max(case when grp = '<=15' then member_no end) as [0-15],
max(case when grp = '<=30' then member_no end) as [15-30],
max(case when grp = '>30' then member_no end) as [>30]
from (select t.*, v.grp,
row_number() over (partition by grp order by member_no) as seqnum
from t cross apply
(values (case when date_difference <= 0 then '<0'
when date_difference <= 15 then '<=15'
when date_difference <= 30 then '<=30'
else '>30'
end)
) v(grp)
) t
group by seqnum
order by seqnum;
子查询基本上枚举了每个组中的成员。这些被聚合聚合成单独的行。
推荐阅读
- javascript - 没有提供 'ref' 的参数。角 10
- android - 无法下载 versionedparcelable-1.1.0.aar (androidx.versionedparcelable:versionedparcelable:1.1.0)
- python - Pygame 窗口在主循环中的大型计算期间冻结
- php - 如果未找到设置为 null,则获取所有带有 sum 的行 - Laravel Eloquent
- java - 将相邻矩阵转移到 Node 类型的相邻链表
- ffmpeg - 防止 FFmpeg 在输入源丢失时停止映射/复用
- arrays - 打字稿:创建具有嵌套级别,键和值作为变量的对象
- python - PyInstaller 无法在 linux 中构建“Firebase Firestore python 文件”
- qt - 如果文本更改,如何自动更改高度
- java - “条件始终为 'true'”和“数组索引超出范围”警告