2015-06-04 2 views
1

Пытается вычислять результаты таблицы, которые могут иметь несколько строк с одинаковым значением У меня есть данные, которые выглядят как это до сих пор.Столбец SQL Pivot, который имеет несколько значений для одного столбца

Nbr  Person  Test 

33  Barry.  Prim 
33  Brian  Sup 
33  Burke RT 1st 
33  Ray   Add 
33  Jake  Add 
33  Smith  Add 

Я пытаюсь повернуть его так, что он выглядит следующим образом:

Nbr Prim Sup  1st  Add Add2  Add3 

33 Barry Brian Burke  Ray Jake  Smith 

Это то, что я до сих пор с нормальным стержнем, но он не работает, чтобы захватить все те с таким же значением в испытательной колонке

CREATE TABLE #testTbl(nbr int,name varchar(20),test VARCHAR(10)) 
INSERT INTO #testTbl 
SELECT '33','Barry','Prim' 
UNION 
SELECT '33','Brian','Sup' 
UNION 
SELECT '33','Burke','1st' 
UNION 
SELECT '33','Ray','Add' 
UNION 
SELECT '33','jake','Add' 
UNION 
SELECT '33','Smith','Add' 


select * from (
Select * 
from #testTbl 
) as x 
pivot(
max(name) for test in ([prim],[sup],[1st],[add]) 
) 
as pivot1 

Любая помощь очень ценится. Если это невозможно, чтобы столбцы, выводимые как Add Add2 и Add3, отлично. Что бы ни работало.

ответ

1

Вы можете сделать это путем изменений test значений с помощью функции окна:

select * 
from (Select tt.name, 
      (test + (case when count(*) over (partition by test) = 1 
          then '' 
          else cast(row_number() over (partition by test order by (select null)) as varchar(255)) 
         end)) as test 
     from testTbl tt 
    ) as x 
pivot(
max(name) for test in ([prim], [sup], [1st], [Add1], [Add2], [Add3]) 
) as pivot1 

SQL-скрипка here.

+0

Gordon - Спасибо! Вы избили меня до моего собственного ответа, поскольку я тоже сужался в этом решении, но я просто собирался сделать Google, как сделать опорную точку, когда я точно не знаю, сколько будет Add. Это может быть Add1 Add2 Add3 .... – Jt2ouan

+0

@ Jt2ouan. , , Тогда вам нужен динамический стержень. Google «динамический стержень» вместе с именем вашей базы данных. –

+0

Yup нашел это тоже. Я всегда забываю о сводных методах, когда я не чередуюсь слишком часто. – Jt2ouan

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