鑑於每個cono
將有3條記錄(如評論中所述),cte
和row_number
可以與case語句一起使用。
如果有少於三條記錄,您會在結果中看到空白和零。任何超過三個將不會有所有記錄。
這裏是@RUGS
爲表變量的例子:
declare @RUGS table (cono int, ARType char(3), [days] int, Revenue int, PPD int)
insert into @RUGS VALUES
(140,'MCD',5,1000,500)
,(140,'MRA',6,2000,600)
,(140,'MRA',7,3000,700)
,(141,'MCD',1,5000,100)
,(141,'MRA',2,6000,200)
,(141,'MRA',3,7000,300);
with cte as
(
select row_number() over(partition by cono order by (select 1)) as rn, * from @RUGS
)
select cono,
max(case when rn = 1 then ARType else '' end) as ARType1,
max(case when rn = 1 then days else '' end) as days1,
max(case when rn = 1 then Revenue else '' end) as Revenue1,
max(case when rn = 1 then PPD else '' end) as PPD1,
max(case when rn = 2 then ARType else '' end) as ARType2,
max(case when rn = 2 then days else '' end) as days2,
max(case when rn = 2 then Revenue else '' end) as Revenue2,
max(case when rn = 2 then PPD else '' end) as PPD2,
max(case when rn = 3 then ARType else '' end) as ARType3,
max(case when rn = 3 then days else '' end) as days3,
max(case when rn = 3 then Revenue else '' end) as Revenue3,
max(case when rn = 3 then PPD else '' end) as PPD3
from cte group by cono
你如何決定列的順序?每個ID總是有3個記錄?如果或多或少呢? – EricZ
是 - 非常符合3條記錄。 cono應該只出現一次3條記錄。 – stackuser
你問了同樣的問題之前http://stackoverflow.com/questions/21890782/getting-data-on-a-single-row,請不要問相同的問題兩次 – EricZ