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列中选择所有不同的标签名?因为它可能是字母表中的所有字母。