Частично сводные данные? - PullRequest
0 голосов
/ 23 октября 2018

Это, наверное, простой вопрос для кого-то там (пальцы скрещены!) У меня есть таблица с такими данными:

syr  dst  sch  category     iep ell section504  Hispanic  Asian White etc etc
1718 001  158  overallboys   18  9               25             72   
1718 001  158  overall girls  9  1       2       21          2  70
1718 001  158  LEP-boys       2                   9      
1718 001  158  LEP-girls      1  15              12          2   1
1718 001  158  TAG- boys                          1              1
1718 001  158  TAG- girls                         2              3 

И это продолжается еще для 143 строк данных.Если возможно, я бы хотел сохранить структуру этой таблицы, но мне нужно (используя Argos) «сгладить» эти данные в одну строку данных LOOOONG для каждой школы, экспортированную в CSV для загрузки в федералы (Отчетность по гражданским правам).Таким образом, приведенные выше данные будут выглядеть так:

syr  dst  sch  overallboys_iep   overallboys_ell  overallboys_section504   overallboys_Hispanic  overallboys_Asian  overallboys_white  overallgirls_iep   overallgirls_ell  overallgirls_section504   overallgirls_Hispanic  overallgirls_Asian  overallgirls_White LEPboys_iep   LEPboys_ell  LEPboys_Section504  LEPboys_Hispanic  LEPboys_Asian  LEPboys_White
1819 001 158    18                9                                              25                                        72           9                    1                2

И так далее.В конце концов, достигнув примерно 1600 столбцов (149 категорий классов / категорий зачислений x 11 демографических категорий.) Являюсь ли я рубом, чтобы думать, что существует "простой" способ превращения строк категории в столбцы без ввода каждого из них.не замужем.один

1 Ответ

0 голосов
/ 02 ноября 2018

Это было сделано:

DECLARE @cols AS NVARCHAR(MAX),
@query  AS NVARCHAR(MAX);

SET @cols = STUFF((select ',' + QUOTENAME( c.ff_name) field                 
        FROM i5_school_profile_crdc_Fields c
        WHERE sort < 788
        ORDER BY sort
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'')

 set @query = 
'SELECT GETDATE() date_loaded, 1718 syr, p.dst,sch, ' + (@cols)+ ' from 
        (
            select dst, sch, value
                , ff_name  field
            from i5_school_profile_crdc_upload 
            WHERE dst = '+ :parm_DD_District.district + ' 


       ) x
        pivot 
        (
             max(value)
            for field in (' + @cols + ')
        ) p '


exec(@query)

Поскольку я работал в Аргосе, я просто использовал это как запрос отчета, и он работал как отчет csv.

...