【问题标题】:SSRS sort columnsSSRS 排序列
【发布时间】:2014-02-21 01:14:13
【问题描述】:

我有一些看起来像这样的数据

ID   |Name  | Label1| Data1 |L2 |D2 |L3 | D3|
AAAA | C    | X     | 2     | Y | 4 |   |   |
BBBB | D    | Y     | 5     | Z | 6 |   |   | 
CCCC | E    | X     | 3     | Y | 6 | Z | 9 |
DDDD | F    | Z     | 5     | X | 6 | Y | 3 |

我需要像这样在报告中显示它:

ID   |Name  | X | Y | Z | 
AAAA | C    | 2 | 4 | 0 |
BBBB | D    | 0 | 5 | 6 |
CCCC | E    | 3 | 6 | 9 |
DDDD | F    | 6 | 3 | 5 |

我该怎么做呢?

【问题讨论】:

  • 我不确定我是否了解您的数据结构。您是否尝试过在标签列上使用列组?
  • 我完全不知道如何使用列组。
  • 我的数据标签没有很好地排序,所以我有点不确定如何继续。

标签: reporting-services sql-server-2012


【解决方案1】:

您可以在 SQL 中旋转数据:

-- load test data
declare @YourTable table(ID char(4),Name char(1),L1 char(1),D1 int,L2 char(1),D2 int,L3 char(1),D3 int)
insert into @YourTable values
    ('AAAA','C','X',2,'Y',4,null,null),
    ('BBBB','D','Y',5,'Z',6,null,null),
    ('CCCC','E','X',3,'Y',6,'Z',9),
    ('DDDD','F','Z',5,'X',6,'Y',3)

-- return pivoted data
select
    ID,
    Name,
    isnull([X],0) [X],
    isnull([Y],0) [Y],
    isnull([Z],0) [Z]
from    (
        select
            yt.ID,
            yt.Name,
            ld.Label,
            ld.Data
        from @YourTable yt
            cross apply (
                        select L1 Label,D1 Data union all
                        select L2 Label,D2 Data union all
                        select L3 Label,D3 Data
                        ) ld
        ) t
    pivot   (
            max(Data)
            for Label in([X],[Y],[Z])
            ) p

【讨论】:

  • 可能有效。我试图找到一种比 Pivoting table 3 次和 Union 然后 Group 更有效的方法。
  • 顺便说一句,有没有办法从所有 3 列中选择所有不同的标签名称来搭配它?因为它可能是字母表中的所有字母。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多