我有一个SQL Server数据库表,我需要在其中转换(pivot?)Vaccination Name
列的值,每个列都放在它们自己的列中。然后我需要使用Vaccination Date
中的值填充这些列。我不是一个程序员,我的研究没有找到符合我需求的东西。
表格示例
答案 0 :(得分:0)
有几种方法可以获得每只宠物每次接种疫苗的最长日期。最简单的可能是使用某种带有聚合函数的条件逻辑:
select
Pet_Name,
Bordetella = max(case when Vaccination_Name = 'Bordetella' then Vaccination_Date end),
CanineDistemper = max(case when Vaccination_Name = 'Canine Distemper' then Vaccination_Date end),
Rabies = max(case when Vaccination_Name = 'Rabies' then Vaccination_Date end)
from <table>
group by Pet_Name;
或者,由于您使用的是SQL Server,因此可以使用PIVOT函数:
select Pet_name,
Bordetella, [Canine Distemper], Rabies
from
(
select
Pet_Name,
Vaccination_Name,
Vaccination_Date
from <table>
) d
pivot
(
max(Vaccination_Date)
for Vaccination_Name in (Bordetella, [Canine Distemper], Rabies)
) piv;
两者都会为您返回相同的结果。我甚至创建了一个demo供你玩。