【问题标题】:How to use SUM in pivot table(CAST cannot be used in aggregate function)如何在数据透视表中使用 SUM(CAST 不能用于聚合函数)
【发布时间】:2014-05-19 03:54:00
【问题描述】:

我正在使用以下数据透视查询:

    select UserId_Fk,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
      from CheckInCheckOut

    PIVOT
    (

     SUM(CAST(CountHours as decimal(18,2))) 
     FOR Day
     IN([Sunday],[Monday],[Tuesday],[Wednesday],[Thursday],[Friday],[Saturday])

    )
   as PivotTable

   Table[CheckInCheckOut]     

 CheckInCheckOutId  int 
    UserId_Fk       int 
  CountHours    nvarchar(50)    
         Day    nvarchar(50)    

我在这里使用 SUM 的方式有问题。我试过了

   select SUM(CAST(CountHours as decimal(18,2))) from CheckInCheckOut

这给了我正确的结果,但我无法在数据透视表中使用相同的结果。

【问题讨论】:

    标签: sql sql-server-2008 pivot-table


    【解决方案1】:

    在进行数据透视查询之前尝试转换您的数据

      select UserId_Fk,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
          from    (Select UserId_Fk,CAST(CountHours as decimal(18,2))as CountHours,[Day]
       from CheckInCheckOut) as convertedtable
    
        PIVOT
        (
    
         SUM(CountHours) 
         FOR Day
         IN([Sunday],[Monday],[Tuesday],[Wednesday],[Thursday],[Friday],[Saturday])
    
        )
       as PivotTable
    

    【讨论】:

      【解决方案2】:

      由于我不使用 sql-server/pivot 这只是一个猜测,但它不应该是一个 group by 子句吗?即

      ...
      as PivotTable
      group by UserId_Fk, ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-27
        • 1970-01-01
        • 2019-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多