透视列以填充另一列中的值

Posted

技术标签:

【中文标题】透视列以填充另一列中的值【英文标题】:Pivot column to populate with values from another column 【发布时间】:2017-05-04 14:38:03 【问题描述】:

我有一个 SQL Server 数据库表,我需要在其中转换(透视?)Vaccination Name 列的值,每个值都转换为它们自己的列。然后我需要用来自Vaccination Date 的值填充这些列。我不是一个程序员,我的研究还没有找到适合我需要的东西。

表格示例

【问题讨论】:

每个疫苗接种有多个日期,您想显示哪个? @ollie。我应该提供更多细节。我需要在单独的列中获取疫苗接种名称的原因是表中的每只宠物只需要一行。他们目前有多个。示例屏幕截图在这里 - imgur.com/a/eaEq5。谢谢! 你想要每个宠物/疫苗组合的最大日期吗?如果一只宠物有多个狂犬病疫苗条目,你想要哪一个? @ollie - 最近的日期,如果有多个。谢谢。 【参考方案1】:

有几种方法可以获得每只宠物每次疫苗接种的最长日期。最简单的可能是使用某种带有聚合函数的条件逻辑:

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 供你玩。

【讨论】:

太棒了!谢谢!

以上是关于透视列以填充另一列中的值的主要内容,如果未能解决你的问题,请参考以下文章

使用另一列中的值填充空白 Excel 单元格?

在 pandas 中,如何根据一列中的唯一值创建列,然后根据另一列中的值填充它?

根据另一列中的值填充多列中的单元格

根据另一列中的值更新 BigQuery 中的嵌套数组

熊猫:从数据透视表中的另一列中减去一列

如何在 python 的另一列中的字符串值中从数据框中的一列中搜索字符串?