2016-11-08 1 views
-2
DECLARE @cols AS NVARCHAR(MAX), 
    @query AS NVARCHAR(MAX) 
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(LineSubType) 
        from TrnsSalaryProcessRegisterDetail 

        --inner join TrnsSalaryProcessRegister on TrnsSalaryProcessRegisterDetail.SRID=TrnsSalaryProcessRegister.Id 
        --where TrnsSalaryProcessRegisterDetail.LineValue!=null 
      FOR XML PATH(''), TYPE 
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,1,'') 
set @query = ' 
     select a.empid,a.payrollname,a.DepartmentName,s.PeriodName, 
      d.* 
     from TrnsSalaryProcessRegister s 
     inner join mstemployee a on a.id=s.empid 
     inner join 
     (
      SELECT SRID,' + @cols + ' 
      from 
      (
       select SRID,LineSubType, LineValue 
       from TrnsSalaryProcessRegisterDetail 

      ) x 
      pivot 
      (
       sum(LineValue) 
       for LineSubType in (' + @cols + ') 
      ) p 
     ) d 
      on s.ID = d.SRID where s.PeriodName=''FY2017-Sep'' and a.payrollname=''EmcoStaff'' order by a.empid asc' 
      --print(@query) 

      execute(@query); 
+0

Я отклонил этот вопрос, потому что он грязный, трудно читаемый и явно не включает вопрос. Это не займет время, чтобы спросить правильно, я не буду тратить время, чтобы ответить. Я удалю голосование, если вы его уберете. –

+0

Привет и добро пожаловать в SO. Кажется, вам нужна помощь в вашем запросе. К сожалению, нам нужна дополнительная информация, чтобы иметь большую возможность помочь здесь. Здесь отличное место для начала. http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

+0

@ форматирование данных назначения на этом сайте требует немного времени для изучения. Я очистил часть кода, но, к сожалению, мы до сих пор не знаем, что фактически хочет OP. –

ответ

0

Просто происходит от того, что было представлено здесь, вы посмотрите, как вы хотите, упорядоченный список отчетливого вернулся в каскадном поле ... Просто добавьте группу, и порядок, по которому должен возвращают различные значения для LineSubeType, поэтому вам, вероятно, больше не понадобится отдельное предложение.

DECLARE @cols AS NVARCHAR(MAX), 
@query AS NVARCHAR(MAX) 
select @cols = STUFF((SELECT ',' + QUOTENAME(LineSubType) 
       from TrnsSalaryProcessRegisterDetail 
       GROUP By QUOTENAME(LineSubType) 
       ORDER BY QUOTENAME(LineSubType) 
       --inner join TrnsSalaryProcessRegister on TrnsSalaryProcessRegisterDetail.SRID=TrnsSalaryProcessRegister.Id 
       --where TrnsSalaryProcessRegisterDetail.LineValue!=null 
     FOR XML PATH(''), TYPE 
     ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'') 
set @query = ' 
    select a.empid,a.payrollname,a.DepartmentName,s.PeriodName, 
     d.* 
    from TrnsSalaryProcessRegister s 
    inner join mstemployee a on a.id=s.empid 
    inner join 
    (
     SELECT SRID,' + @cols + ' 
     from 
     (
      select SRID,LineSubType, LineValue 
      from TrnsSalaryProcessRegisterDetail 

     ) x 
     pivot 
     (
      sum(LineValue) 
      for LineSubType in (' + @cols + ') 
     ) p 
    ) d 
     on s.ID = d.SRID where s.PeriodName=''FY2017-Sep'' and a.payrollname=''EmcoStaff'' order by a.empid asc' 
     --print(@query) 

     execute(@query); 
+0

Посмотрите на строки 5 и 6 –

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