根据另一列中的值比较一列中的两个值
Posted
技术标签:
【中文标题】根据另一列中的值比较一列中的两个值【英文标题】:Compare two values from one column based on values in another 【发布时间】:2020-11-24 06:09:05 【问题描述】:我有一个表格,我需要根据它们在另一列中的名称比较两个值,以查看哪个更大。基本上:
If **name1** -> value1
If **name2** -> value2
Compare **value1 > value2**
我已经进行了总结,但我找不到使用CASE WHEN
方法来解决这种情况的方法。
【问题讨论】:
【参考方案1】:您可以PIVOT
数据并拥有当前行中的所有值。然后,随意比较它们:
SELECT [Id]
,[name1], [name2], [name3], [name4]
FROM [my_table]
PIVOT
(
MAX([value]) FOR [column] IN ([name1], [name2], [name3], [name4])
) PVT
或
SELECT [Id]
,MAX(CASE WHEN [column] = 'name1' THEN [value] END) AS [name1]
,MAX(CASE WHEN [column] = 'name2' THEN [value] END) AS [name2]
,MAX(CASE WHEN [column] = 'name3' THEN [value] END) AS [name3]
,MAX(CASE WHEN [column] = 'name4' THEN [value] END) AS [name4]
FROM [my_table]
GROUP [Id];
【讨论】:
好吧,你从来没有提到数据量?我可以给你另一种技术,但你需要分享更多细节。 列名来自另一个 ID 表并且正在增长。目前它有大约 20 个不同的名称,它们是不同指标的名称。我找到了一些解决方法,并在您的解决方案中添加了一个 WHERE 子句来过滤我想要的名称。 @Yana 你也可以试试第二种方法。最好的方法是在新表中以PIVOT
的方式预先计算值,因为不需要实时执行此操作。以上是关于根据另一列中的值比较一列中的两个值的主要内容,如果未能解决你的问题,请参考以下文章
在 pandas 中,如何根据一列中的唯一值创建列,然后根据另一列中的值填充它?
根据另一列中的值删除一列的重复项,Python,Pandas