Reporting services SSRS排序列

Reporting services SSRS排序列,reporting-services,sql-server-2012,Reporting Services,Sql Server 2012,我有一些像这样的数据 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  | 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 |

我该怎么做呢

您可以在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

我不太清楚您的数据是如何构造的。您是否尝试过在标签列上使用列组?我根本不知道如何使用列组。但是,我的数据标签没有很好地排序,因此我有点不确定如何继续。可能有效。我试图找到一种比将表旋转3次,然后使用Union和Group更有效的方法。顺便问一下,有没有办法从所有3列中选择所有不同的标签名?因为它可能是字母表中的所有字母。