正確な解決策はデータ モデルによって異なりますが、残念ながらテーブルの提供を怠っています。したがって、これは可能な解決策を示しているにすぎません。適切な手法は、クエリ プロジェクションでの CASE の使用です。
select
segment
, sum(case ( when type = 'LEASE' and t_date >= trunc(sysdate, 'MON') then
t_qty else 0 end) as lease_mtd
, sum(case ( when type = 'LEASE' then
t_qty else 0 end) as lease_ytd
, sum(case ( when type = 'RENTAL' then
t_qty else 0 end) as rental_mtd
, sum(case ( when type = 'RENTAL' and t_date >= trunc(sysdate, 'YYYY') then
t_qty else 0 end) as rental_ytd
from your_tablee
where t_date >= trunc(sysdate, 'YYYY')
sysdate の TRUNC() は巧妙なトリックであり、書式マスクによって示される日付を生成します。したがって、「MON」マスクは現在の月の最初の日を生成し、「YYYY」は現在の年の 01-JAN を生成します。