繁体   English   中英

我们可以在SQL中执行PIVOT表时添加两列

[英]Can we add two columns while doing PIVOT table in SQL

我有一个有3列的表。 在其中,我正在显示ContainerCount随时间变化的及时报告。 下图显示了实际的表格 在此输入图像描述

我正在为此表做转轴,图像如下所示 在此输入图像描述

现在我想添加所有列,并希望显示在单列中。 但没有得到。 查询如下所述

SELECT 'CFS to Zero' Location, sum( [0]+[1]+[2]+[3])  FROM                         
(SELECT  [ContainerCount],Time FROM #tt )as Tab1                        
PIVOT                        
(                        
MAX([ContainerCount]) FOR Time IN ([0])) AS Tab2 ;

使用coalesce()

SELECT 'CFS to Zero' Location, coalesce([0],0)+coalesce([1],0)+coalesce([2],0)+coalesce([3],0)  FROM                         
(SELECT  [ContainerCount],Time FROM #tt )as Tab1                        
PIVOT                        
(                        
MAX([ContainerCount]) FOR Time IN ([0],[1],[2],[3])) AS Tab2

如果你只需要1个SUM,那么你真的不需要PIVOT。

只需合计并获得MAX值,然后将它们求和即可。

这样的好处是您可以只使用BETWEEN来选择一个时间范围。
而不必在PIVOT中硬编码时间值。

SELECT 
 'CFS to Zero' AS Location, 
 SUM(MaxContainerCount) AS TotalMaxContainerCount
FROM
(
  SELECT 
   [Time], 
   MAX(ContainerCount) AS MaxContainerCount
  FROM #tt
  WHERE [Time] BETWEEN 0 AND 3
  GROUP BY [Time]
) q

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM