Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 基于另一列中的值比较一列中的两个值_Sql_Sql Server_Tsql_Pivot - Fatal编程技术网

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];