Я новичок в использовании Teradata SQL, и мне нужно ежемесячно рассчитывать количество сотрудников на основе начальных и конечных дат. Скажем, у меня есть четыре данных сотрудников, два из которых до сих пор используемых на 4-30-2012, так это выглядит, как этотSQL - ежемесячно рассчитывается на основе начальных и конечных дат
Emp_ID join_date leave_date
1 1-1-2012 2-02-2012
2 1-17-2012 3-4-2012
3 2-1-2012 1-1-9999
4 3-20-2012 1-1-9999
Желаемая выход:
MonthEnd Emp_Count
1-31-2012 2
2-29-2012 2
3-31-2012 1
4-30-2012 2
Есть ли более элегантный способ сделать это, чем просто UNION ALL кучу Selects?
select
'1-31-2012' as MonthEnd
Count(Emp_ID) as Emp_Count
where join_date <= MonthEnd and leave_date > MonthEnd
UNION ALL
select
'2-29-2012' as MonthEnd
Count(Emp_ID) as Emp_Count
where join_date <= MonthEnd and leave_date > MonthEnd
UNION ALL
select
'3-31-2012' as MonthEnd
Count(Emp_ID) as Emp_Count
where join_date <= MonthEnd and leave_date > MonthEnd
UNION ALL
select
'4-30-2012' as MonthEnd
Count(Emp_ID) as Emp_Count
where join_date <= MonthEnd and leave_date > MonthEnd
Также игнорируйте проблемы форматирования данных, поскольку об этом уже заботятся.