sql: как динамически комбинировать строки? - PullRequest
0 голосов
/ 27 июня 2019

Мне нужно получить результаты в очень специфическом формате

пытался создать временную таблицу, но не знаю, как объединить только при определенных условиях

create table #Temptable1
(static1 varchar(100), idnum varchar(100), static2 varchar(100), reg 
decimal, ovt decimal, other decimal, static3 varchar(100))

insert into #temptable1

Select

'D00',
e.idnum,
' ',
case when p.Pdn =1 then (isnull(sum(p.hours),0))*100 else 0 end,
case when p.Pdn =2 then (isnull(sum(p.hours),0))*100 else 0 end,
case when p.Pdn in (4,17) then (isnull(sum(p.hours),0))*100 else 0 end,
case when p.Pdn =4 then 20 when Pdn =17 then 23 else 0 end

from e, p

where e.filekey=p.filekey and p.Pdn in (1,2,4,17)
group by e.idnum, p.Pdn 

order by e.idnum

select static1, idnum, static2, sum(reg), sum(ovt), sum(other), static3 from 
#temptable1

group by static1, static2, static3, idnum

static1   idnum  static2     reg    ovt    other    static3
D00       64                 6475   25     0         0
D00       64                 0      0      800       20
D00       64                 0      0      775       23

это хорошая информация, но мне нужно, чтобы формат выглядел следующим образом:

static1   idnum   static2    reg    ovt    other    static3
D00       64                 6475   25     800       20
D00       64                 0      0      775       23

, другими словами, если нет часов, отличных от 0, в других, и static3 в порядке.если есть часы, он должен быть в одном ряду.если есть несколько других (сгруппированных по static3), то первая идет в первой строке, а последующие - в отдельной строке с 0 Reg и 0 Ovt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...