没有行的SQL Pivot Count 0-值的顺序一致

时间:2018-11-30 19:29:09

标签: sql sql-server tsql count pivot

你好Stackflow社区!

我真的可以使用一些帮助来使该查询执行我想做的事情。我实质上是按大学,课程和年份来统计比赛数据。我有一个很好的枢轴,但是当源数据中不存在任何行时,它不包括比赛计数。

这是我的代码示例:

select distinct college, INSTITUT_DIV_DESC, ipeds_value_desc, 
[1516], [1617], [1718], [1819]
from 

 (  select distinct sch.id_num, case idd.school_cde 
        when 'AL' then 'ALE'
        when 'CE' then 'CEN'
        when 'CN' then 'CNE'
        when 'CR' then 'CRD'
        when 'HS' then 'HSA' 
        when 'TR' then 'TRI' end as College, 
        institut_div_desc,sch.yr_cde, ipeds_value_desc 
        from student_crs_hist_v sch
        join stud_term_sum_div sts 
        on sch.id_num=sts.id_num 
        and sch.yr_cde=sts.yr_cde 
        and sch.trm_cde=sts.trm_cde 
        and sch.crs_div=sts.div_cde 
        and sch.transaction_sts=sts.transaction_sts
        join instit_divisn_def idd 
        on sch.institut_div_cde=idd.institut_div_cde 
        right outer join ethnic_race_v erv 
        on sch.id_num=erv.id_num 
        where sch.yr_cde>1415

    group by sch.id_num, idd.school_cde,institut_div_desc,sch.yr_cde, ipeds_value_desc )
as s
pivot 
(
    count (s.id_num) for yr_cde in ([1516], [1617], [1718], [1819]))
as pvt1

order by college, institut_div_desc, ipeds_value_desc

这是我现在收到的样本集:

sample data

我希望始终将比赛值按以下顺序显示: 美洲印第安人或阿拉斯加原住民 亚洲人 黑人或非裔美国人 任何种族的西班牙裔 夏威夷原住民或其他太平洋岛民 非居民外国人 种族和种族未知 两个或两个以上种族 白色

在样本数据中,您可以看到AL代码没有列出所有种族,因为源表ethnic_race_v中没有任何行。我想确保为每个机构部门列出所有可能的种族值,并在必要时添加0。

欢迎提出任何建议。

0 个答案:

没有答案