【发布时间】:2020-11-24 06:09:05
【问题描述】:
我有一个表格,我需要根据它们在另一列中的名称比较两个值,以查看哪个更大。基本上:
If **name1** -> value1
If **name2** -> value2
Compare **value1 > value2**
我已经进行了总结,但我找不到使用CASE WHEN 方法来解决这种情况的方法。
【问题讨论】:
标签: sql sql-server tsql pivot
我有一个表格,我需要根据它们在另一列中的名称比较两个值,以查看哪个更大。基本上:
If **name1** -> value1
If **name2** -> value2
Compare **value1 > value2**
我已经进行了总结,但我找不到使用CASE WHEN 方法来解决这种情况的方法。
【问题讨论】:
标签: sql sql-server tsql pivot
您可以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];
【讨论】:
PIVOT 的方式预先计算值,因为不需要实时执行此操作。