【问题标题】:how to create Pivot query for this?如何为此创建数据透视查询?
【发布时间】:2015-05-08 05:13:32
【问题描述】:

我需要这样的输出。

在这个没有形状的限制;例如:[RD]、[PC]、[EM]、[SE]、[PR]、[CM]

我的数据如下所示:

POINTER_RANGE SHAPE_NAME PCS CTS VALUE 0.30-0.39 RD 6 1.826 3503.17 0.40-0.49 RD 3 1.238 2837.62 0.50-0.69 PR 1 0.504 776.16 0.50-0.69 RD 5 2.618 8639.58 0.70-0.89 PC 5 4.109 14278.41 0.70-0.89 RD 6 4.490 17335.04 0.90-0.99 RD 2 1.803 5860.92 1.00-1.49 个人计算机 3 3.039 9515.10 1.00-1.49 RD 7 7.807 56716.18 1.50-1.99 新兴市场 2 3.203 17080.48 1.50-1.99 RD 3 4.950 32516.03 2.00-2.99 新兴市场 2 4.528 27155.22 2.00-2.99 RD 34 75.462 703583.44 3.00-3.99 厘米 1 3.024 23194.08 3.00-3.99 RD 7 21.138 329701.25 3.00-3.99 SE 1 3.212 26980.80 动态枢轴查询。

在 SQL 中,得到这样的结果就可以了。

[指针] [RD_PCS] [RD_CTS] [RD_VAL] [EM_PCS] [EM_CTS] [EM_VAL] [....] 0.30-0.39 1 1.20 5000.00 2.00-2.99 5 5.30 10000.00 5 6.30 5000.00 : : 3.00-3.99 2 2.50 200.00

我只是解释一下这是什么类型的要求。这对我来说太复杂了。 我无法为此编写查询,这在我的报告方面对我来说非常重要。

【问题讨论】:

  • 还需要总行数和总列数吗?
  • 不需要总行数和总列数。我将根据结果进行管理
  • 您的预期结果与您的样本数据不匹配。
  • 是的,我知道,我只是举一个输出的例子。可能b这种类型也能得到结果

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


【解决方案1】:

您可以使用动态交叉表来实现这一点。请阅读 Jeff Moden 撰写的 article 以供参考。

SQL Fiddle

DECLARE @sql1 VARCHAR(4000) = ''
DECLARE @sql2 VARCHAR(4000) = ''
DECLARE @sql3 VARCHAR(4000) = ''

SELECT @sql1 = 
'SELECT
      [POINTER] = POINTER_RANGE' + CHAR(10)

SELECT @sql2 = @sql2 +
'   , [' + SHAPE_NAME + '_CTS] = MAX(CASE WHEN SHAPE_NAME =''' + SHAPE_NAME + ''' THEN CTS END)' + CHAR(10) +
'   , [' + SHAPE_NAME + '_PCS] = MAX(CASE WHEN SHAPE_NAME =''' + SHAPE_NAME + ''' THEN PCS END)' + CHAR(10) +
'   , [' + SHAPE_NAME + '_VAL] = MAX(CASE WHEN SHAPE_NAME =''' + SHAPE_NAME + ''' THEN VALUE END)' + CHAR(10)
FROM(
    SELECT DISTINCT SHAPE_NAME FROM TestData
)t
ORDER BY SHAPE_NAME

SELECT @sql3 =
'FROM TestData
GROUP BY POINTER_RANGE
ORDER BY POINTER_RANGE'

PRINT (@sql1 + @sql2 + @sql3)
EXEC (@sql1 + @sql2 + @sql3)

【讨论】:

  • 没问题。很高兴我能帮上忙。
  • 嗨,我需要行和列总计。所以要改变查询,你能帮我吗?
猜你喜欢
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
  • 2013-02-14
相关资源
最近更新 更多