34,590
社区成员
发帖
与我相关
我的任务
分享
;with cte as
(
select row_number() over(partition by 单号 order by getdate()) id,*
from tb
)
select 单号,max(case when id = 1 then 付款金额 else 0 end) 付款金额,
max(case when id = 1 then 付款日期 else 0 end) 付款日期,
max(case when id = 2 then 付款金额 else 0 end) 付款金额1,
max(case when id = 2 then 付款日期 else 0 end) 付款日期1,
max(case when id = 3 then 付款金额 else 0 end) 付款金额2,
max(case when id = 3 then 付款日期 else 0 end) 付款日期2
from cte
group by 单号
--sql 2000
select 单号,
max(case px when 1 then 付款金额 end) 付款金额1,
max(case px when 1 then 付款日期 end) 付款日期1,
max(case px when 2 then 付款金额 end) 付款金额2,
max(case px when 2 then 付款日期 end) 付款日期2,
max(case px when 3 then 付款金额 end) 付款金额3,
max(case px when 3 then 付款日期 end) 付款日期3
from
(
select t.* , px = (select count(1) from tb where 单号 = t.单号 and 付款日期 < t.付款日期) + 1 from tb t
) m
group by 单号
--sql 2005
select 单号,
max(case px when 1 then 付款金额 end) 付款金额1,
max(case px when 1 then 付款日期 end) 付款日期1,
max(case px when 2 then 付款金额 end) 付款金额2,
max(case px when 2 then 付款日期 end) 付款日期2,
max(case px when 3 then 付款金额 end) 付款金额3,
max(case px when 3 then 付款日期 end) 付款日期3
from
(
select t.* , px = row_number() over(partition by 单号 order by 付款日期) from tb t
) m
group by 单号
;with cte as
(
select row_number() over(partition by 单号 order by getdate()) id,*
from tb
)
select 单号,max(case when id = 1 then 付款金额 else '' end) 付款金额,
max(case when id = 1 then 付款日期 else '' end) 付款日期,
max(case when id = 2 then 付款金额 else '' end) 付款金额1,
max(case when id = 2 then 付款日期 else '' end) 付款日期1,
max(case when id = 3 then 付款金额 else '' end) 付款金额2,
max(case when id = 3 then 付款日期 else '' end) 付款日期2
from cte
group by 单号