加入数据透视表sql

时间:2017-01-10 21:28:58

标签: sql sql-server

我有两个表需要进行连接。一,我需要的标题实际上是在字段中。经过多次游戏后,我发现了这一点。我真的很兴奋,因为它正在运行,但令我沮丧的是我意识到它只有表格[GM]中的标题。[dbo]。[PKT]。它缺少表a中的所有字段([GM]。[dbo]。[CMPLX])。如何显示表a中的字段?另外,我试图只显示表p中的某些字段,但只有在我这样做时才会显示 - 在枢轴部分选择* From。

With GM1 AS (
Select TOP 10 a.[CMPLX_NBR],
  a.[SYSTEM_ID],
  a.[PKT_TYP_CD],
  a.[CATEG_CD],
  a.[SUPPLR_CD],
  a.[TRANS_CD],
  a.[PRIORITY_INT],
  a.[PRIORITY_INT_EXPR_DT],
  a.[RQSTR_NBR],
  a.[TMSTMP],
p.[PKT_DTTM]
FROM [GM].[dbo].[CMPLX] as a
INNER JOIN [GM].[dbo].[PKT] as p
ON a.[CMPLX_NBR] = p.[CMPLX_NBR]
)

SELECT *
FROM [GM].[dbo].[PKT]
PIVOT (
    sum([PKT_ATTR_CNT])
        For [PKT_ATTR_CD]
        IN (not_sent, not_sent, other, appl, avg, max, min, sum, sent, why)
        )AS GM1Pivot;

1 个答案:

答案 0 :(得分:0)

在PIVOT运算符中,我们仅指示聚合和扩展元素,而不指示分组元素。 T-SQL通过消除来识别分组元素。这就是为什么我们在使用PIVOT之前使用CTE(仅3个元素(列))的原因  CTE应该只有这些元素:

  1. 分组列([CMPLX_NBR])

  2. 传播栏([PKT_TYP_CD]),

  3. 聚合列([PKT_ATTR_CNT])。