我有两条记录如下:
Id User_name User_id
DT122 Doe, John 123
DT122 Yum, Mi 124
如何在可以显示结果的Oracle查询中编写
Id UserName1 Username2
DT122 Doe, John Yum, Mi
任何反馈,想法?
答案 0 :(得分:0)
以下是在sql server中执行此操作的方法。这被称为交叉表,有些人称之为条件聚合。另一种选择是使用PIVOT。我发现交叉表的语法比枢轴更少钝,它通常对性能有一点点优势。
您可以在此处详细了解此技术。 http://www.sqlservercentral.com/articles/T-SQL/63681/。或者,如果您不知道需要多少列来完成动态版本。你可以在这里阅读。 http://www.sqlservercentral.com/articles/Crosstab/65048/
create table #Something
(
Id char(5)
, User_name varchar(20)
, User_id int
)
insert #Something
select 'DT122', 'Doe, John', 123 union all
select 'DT122', 'Yum, Mi', 124
select Id
, MAX(case when RowNum = 1 then User_Name end) as UserName1
, MAX(case when RowNum = 2 then User_Name end) as UserName2
from
(
select ID
, USER_NAME
, USER_ID
, ROW_NUMBER() over (PARTITION BY Id order by user_name) as RowNum
from #Something
) x
group by x.Id
drop table #Something