Sql 基于另一列中的值比较一列中的两个值
我有一个表格,我需要根据另一列中的两个值的名称来比较它们,看看哪个更大。基本上:Sql 基于另一列中的值比较一列中的两个值,sql,sql-server,tsql,pivot,Sql,Sql Server,Tsql,Pivot,我有一个表格,我需要根据另一列中的两个值的名称来比较它们,看看哪个更大。基本上: If **name1** -> value1 If **name2** -> value2 Compare **value1 > value2** 我已经做了求和,但是当接近这种情况时,我找不到使用案例的方法。您可以透视数据并将所有值放在当前行中。然后,根据需要对它们进行比较: SELECT [Id] ,[name1], [name2], [name3], [name4] FROM
If **name1** -> value1
If **name2** -> value2
Compare **value1 > value2**
我已经做了求和,但是当接近这种情况时,我找不到使用案例的方法。您可以透视数据并将所有值放在当前行中。然后,根据需要对它们进行比较:
SELECT [Id]
,[name1], [name2], [name3], [name4]
FROM [my_table]
PIVOT
(
MAX([value]) FOR [column] IN ([name1], [name2], [name3], [name4])
) PVT
或
你从来没提过数据量?我可以为您提供其他技术,但您需要共享更多详细信息。列名来自另一个ID表,并且正在增长。目前它有大约20个不同的名称,它们是不同指标的名称。我找到了一些解决方法,并在解决方案中添加了WHERE子句来过滤我想要的名称。@Yana您也可以尝试第二种方法。最好的方法是在新表中以
PIVOT
方式预先计算值,因为不需要实时执行此操作。
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];