我有一个可以正常工作的存储过程,但不明白它为什么工作的理论。我通过使用日期部分和密集等级来识别连续的时间段(通过其他地方的帮助找到解决方案)。
select
c.bom
,h.x
,h.z
,datepart(year, c.bom) * 12 + datepart(month, c.bom) -- this is returning a integer value for the year and month, allowing us to increment the number by one for each month
- dense_rank() over ( partition by h.x order by datepart(year, c.bom) * 12 + datepart(month, c.bom)) as grp -- this row does a dense rank and subtracts out the integer date and rank so that consecutive months (ie consecutive integers) are grouped as the same integer
from
#c c
inner join test.vw_info_h h
on h.effective_date <= c.bom
and (h.expiration_date is null or h.expiration_date > c.bom)
我从理论上理解分组功能发生了什么。
乘以年 * 12 + 月如何工作?为什么我们将年份相乘?后端发生了什么?