Sql server 如何使用多个条件跨列计算总计?

Sql server 如何使用多个条件跨列计算总计?,sql-server,tsql,Sql Server,Tsql,我试着把每个课程代码的每个等级的总数加起来。总共有26个以上的程序代码,它们分散在6列中。我需要按学校、年级对程序代码进行汇总,如输出所示 很抱歉,我没有代码,但我甚至不知道从哪里开始 数据集: 所需输出: 输出的总数按学校、年级分组 SQL可以做到这一点吗?如果可以,请怎么做 谢谢大家! 这应该让你开始了 select school_code ,grade_level ,sum(case when [program code 1] = 'A' or [prog

我试着把每个课程代码的每个等级的总数加起来。总共有26个以上的程序代码,它们分散在6列中。我需要按学校、年级对程序代码进行汇总,如输出所示

很抱歉,我没有代码,但我甚至不知道从哪里开始

数据集:

所需输出:

输出的总数按学校、年级分组

SQL可以做到这一点吗?如果可以,请怎么做


谢谢大家!

这应该让你开始了

select 
school_code
,grade_level 
,sum(case when [program code 1] = 'A' 
            or [program code 2] = 'A' 
            or [program code 3] = 'A' 
            or [program code 4] = 'A' 
            or [program code 5] = 'A' 
            or [program code 6] = 'A' 
            then 1  else 0 end )as A
,sum(case when [program code 1] = 'B' 
            or [program code 2] = 'B' 
            or [program code 3] = 'B' 
            or [program code 4] = 'B' 
            or [program code 5] = 'B' 
            or [program code 6] = 'B' 
            then 1  else 0 end )as B
,sum(case when [program code 1] = 'C' 
            or [program code 2] = 'C' 
            or [program code 3] = 'C' 
            or [program code 4] = 'C' 
            or [program code 5] = 'C' 
            or [program code 6] = 'C' 
            then 1  else 0 end )as C

--... Repeat the above or however many program codes you have

from
    --Whatever table you need to use 


group by 
School_Code
,Grade_level

程序代码1
程序代码2
不同吗?比如,它是否意味着一些不同的东西,或者它们实际上只是重复顺序没有任何意义的字段?如果是这样,您将看到
UNPIVOT()
PIVOT()
。根据服务方式,每个学生将获得6个程序代码。因此,它们不是重复字段。每列可以是大约30个不同字符中的一个。那么,如果它们不同,您如何区分所需输出中的程序代码?你想要的输出是程序1吗?还有,学校代码是你的楼号,还是你的学生证?在我姐姐看来,学校的规章制度肯定就是这幢楼!我不太确定输出文件来自哪里。我必须重新创造它。学校代码是学校ID,代表建筑物。学生ID对于学生来说是独一无二的。这就像我必须按列求和,然后将所有6个程序代码列相加,对于30个或学校程序代码中的每一个,按学校和年级分组。我只是还没想好。谢谢@BaconBitsThen我看不到从数据集中获得所需输出的方法。我假设期望的输出是“在111号楼12年级,2048名学生有程序代码D”。然而,您的原始数据集只显示“在3级579号楼,程序代码1为B”。数据集中没有学生ID,只有建筑数据。此外,您说程序代码1实际上与程序代码2不同,它们不是重复组,但所需的输出没有说明是否是程序代码1、2、3、4等。没有足够的信息从您的数据集中生成输出。在我在“结束”一词后加上括号后,它起作用了!谢谢@lookslikenevo!所以当你用这样一个例子求和的时候,它把所有列加在一起?再次感谢@JM1它将给你们一个按学校代码和年级分组的代码的总和,并在答案中添加括号