【问题标题】:cross tabulation Msg 8120, Level 16, State 1, Line 8交叉制表 Msg 8120, Level 16, State 1, Line 8
【发布时间】:2013-11-05 13:52:00
【问题描述】:

我正在尝试在 sql server express 2012 中执行以下操作

SELECT t,     
  MAX(CASE ItemID WHEN 1 THEN qun  ELSE  '' END) AS [Item-A],    
  MAX(CASE ItemID WHEN 2 THEN qun  ELSE  '' END) AS [Item-B],    
  MAX(CASE ItemID WHEN 3 THEN qun  ELSE  '' END) AS [Item-C],
  MAX(CASE ItemID WHEN 4 THEN qun  ELSE  '' END) AS [Item-D],
  MAX(CASE ItemID WHEN 5 THEN qun  ELSE  '' END) AS [item-E]
FROM 
(
   SELECT  CONVERT(char(7),Production.Production.[Date] , 112)as t, 
        sum(Production.Production.Quantity) qun, 
        Production.Production.ItemID ItemID
    FROM    Production.Production 
)AS e 
GROUP BY e.t

但我得到了错误:

消息 8120,第 16 级,状态 1,第 8 行

选择列表中的列“Production.Production.Date”无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

【问题讨论】:

    标签: sql pivot sql-server-2012-express


    【解决方案1】:

    由于您在子查询中使用聚合函数,因此您需要对选择列表中未聚合的列使用 GROUP BY 函数。您需要添加以下行:

    GROUP BY CONVERT(char(7),Production.Production.[Date] , 112), Production.Production.ItemID
    

    所以您的完整查询将是:

    SELECT t,     
        MAX(CASE ItemID WHEN 1 THEN qun  ELSE  '' END) AS [Item-A],    
        MAX(CASE ItemID WHEN 2 THEN qun  ELSE  '' END) AS [Item-B],    
        MAX(CASE ItemID WHEN 3 THEN qun  ELSE  '' END) AS [Item-C],
        MAX(CASE ItemID WHEN 4 THEN qun  ELSE  '' END) AS [Item-D],
        MAX(CASE ItemID WHEN 5 THEN qun  ELSE  '' END) AS [item-E]
    FROM 
    (
        SELECT  
            CONVERT(char(7),Production.Production.[Date] , 112) as t, 
            sum(Production.Production.Quantity) qun, 
            Production.Production.ItemID ItemID
        FROM    Production.Production 
        GROUP BY CONVERT(char(7),Production.Production.[Date] , 112), Production.Production.ItemID
    )AS e 
    GROUP BY e.t
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多