0
Posted on Tuesday, September 02, 2014 by 醉·醉·鱼 and labeled under ,

问题

原始数据如下
需要在SSRS report里面呈现这样的结果。

解决


  1. 创建测试数据
    CREATE TABLE Test
    ([Student] varchar(1), [Class] varchar(8), [Score] int);

    INSERT INTO Test
    ([Student], [Class], [Score])
    VALUES
    ('A', 'English', 90),
    ('B', 'Computer', 78),
    ('B', 'Math', 88),
    ('C', 'Math', 55),
    ('C', 'Computer', 86),
    ('C', 'English', 64);
  2. 将数据按照student进行partition,按照class排序。
        select *, ROW_NUMBER() OVER (PARTITION BY Student ORDER BY Class) AS rn FROM Test
  3. 用这个query在SSRS里面添加一个新的dataset。
  4. 添加一个table,并添加Class和Score。
  5. 添加一个column group on Student。
  6. 添加一个row group on rn,并且添加一个group header。
  7. 清除rn column。因为没法隐藏,只能够把里面的内容清掉,然后去掉边框去掉。
  8. group header里面分别用表达式 =Min(Fields!Class.Value) & =Min(Fields!Score.Value)
  9. 最后把Details row隐藏起来。



PS: 我在Stackoverflow上面问了一圈,看上去都没有人解决。无意间看到MS官网,答案是说不可能。http://stackoverflow.com/questions/25602108/ssrs-how-to-create-pivot-table-result-without-blank-cells Stackoverflow也不是万能的啊。。。