2014-02-21 5 views
-1

У меня есть некоторые данные, которые выглядят такSSRS сортировать столбцы

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 | 

Как идти об этом?

+0

Я не совсем уверен, что я понимаю, как структурирована ваши данные. Вы пытались использовать группу столбцов в столбце ярлыков? – mmarie

+0

Я не уверен, как использовать группы столбцов вообще. – user3992

+0

http://technet.microsoft.com/en-us/library/dd207149.aspx – mmarie

ответ

0

Вы можете поворачивать данные в 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 
+0

Могущество работа. Я пытался найти более эффективный метод, чем разворачивание таблицы 3 раза, а также Union, а затем Group. – user3992

+0

BTW, есть ли способ выбрать все различные названия ярлыков из всех трех столбцов, чтобы пойти с ним? Потому что это могут быть все буквы алфавита. – user3992

+0

Помимо этого он отлично работает! Спасибо за ответ :) – user3992

Смежные вопросы