【问题标题】:Calculate columnwise total for dynamic columns in SQL Server计算 SQL Server 中动态列的按列总计
【发布时间】:2015-03-10 11:28:53
【问题描述】:

我有以下输出,它是从以下存储过程生成的

   SET @sql = '

   SELECT  * FROM (SELECT [NAMES],logdate,[worked time] 
   from tmp_phys_table GROUP BY NAMES,LOGDATE,[WORKED TIME]) AS [SubTable] 
   PIVOT
   (
    MAX([worked time])
             FOR [logdate] IN ([' + @docDates + '])
       ) AS [Pivot] ;';

上面的查询给出以下输出

现在我想做一个列总计,并在动态列的末尾包含一个名为总时间的新列,例如。可能有 3 列或 30 列。

【问题讨论】:

  • 我正在尝试将输出放在没有发生的物理表中..但这可能是另一个问题。需要上述帮助
  • 此列Total Time 已存在,但您想在 select 子句中获取它?或者您需要添加新列?如果是新列,它应该如何计算总时间(哪一列总时间)?
  • @Stanislovas Kalašnikovas 是的,该列已经存在,我希望该列在 select 语句中
  • 该列存在于哪个表中?
  • 查询中的tmp_phys_table

标签: sql sql-server-2008 tsql calculated-columns dynamic-columns


【解决方案1】:

应该是这样的:

   SET @sql = '

   SELECT *
   FROM (SELECT [NAMES], logdate, [worked time], [Total Time] 
         FROM tmp_phys_table 
         GROUP BY NAMES,LOGDATE,[WORKED TIME], [Total Time]
         ) AS [SubTable] 
   PIVOT
   (
    MAX([worked time])
             FOR [logdate] IN ([' + @docDates + '])
       ) AS [Pivot] ;';

【讨论】:

  • Stanislovas Kalašnikovas 我执行了查询,它给出了以下错误 Incorrect syntax near ']'。
  • Stanislovas Kalašnikovas : 以任何方式将此输出放入物理表中
  • 立即尝试。更新了答案。
猜你喜欢
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 2011-05-04
  • 2016-08-09
  • 1970-01-01
  • 1970-01-01
  • 2018-07-20
相关资源
最近更新 更多