Hel*_*rld 0 sql-server query pivot
我遇到了与在单个结果中连接一对多字段相同的问题?,但我需要一个结果,其中“许多”字段占据自己的列并且没有连接在一列中。有什么建议?
样本数据:
___ID Mapped_Heading Source_Value
1 English pass
1 Math pass
1 History fail
___ID Name Age
1 Bob 12
2 Harry 12
3 Emily 14
Run Code Online (Sandbox Code Playgroud)
最终结果将是:
___ID Name Age English Math History
1 Bob 12 pass pass fail
Run Code Online (Sandbox Code Playgroud)
我希望我也不会用PIVOT
和PARTITION BY
,因为我不熟悉这些功能,但我一直撞到他们对于这个问题这么认为,我可能有什么打算?
一种方法是使用PIVOT
.
这是设置代码:
create table grades (
ID int,
Mapped_Heading varchar(10),
Source_Value varchar(10)
);
create table students (
ID int,
Name varchar(10),
Age int
);
insert grades
values
(1,'English', 'pass'),
(1,'Math', 'pass'),
(1,'History', 'fail');
insert students
values
(1, 'Bob', 12),
(2, 'Harry', 12),
(3, 'Emily', 14);
Run Code Online (Sandbox Code Playgroud)
这是PIVOT
代码:
with temp as (
select s.*, g.Mapped_Heading, g.Source_Value
from students s
join grades g on g.ID = s.ID
)
select *
from (
select *
from temp
) a
pivot (
max(Source_Value)
for Mapped_Heading in ([English],[Math],[History])
) as b
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
+----+------+-----+---------+------+---------+
| ID | Name | Age | English | Math | History |
+----+------+-----+---------+------+---------+
| 1 | Bob | 12 | pass | pass | fail |
+----+------+-----+---------+------+---------+
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
87 次 |
最近记录: |