“我有一个像这样的表,我使用了group by和sum()函数来计算 在不同地区举行的每种训练类型的总参与者。现在我要做的是我希望每种训练类型类别的总和,例如:对于CMST,我希望CMST之后的男性,女性和总参与者的总和以及其他所有类别像这样:“
我正在视图表中显示此表并使用mvc实体框架。是否可以通过sql查询来执行此操作,还是更适合通过编码来执行此操作?请提出实现它的最佳方法。< / p>
以下是我正在使用的查询:
select [District_Name] as DISTRICT_NAME,
[Training_Type],
sum(Male_Participants) as Male_Participants,
sum([Female_Participants]) as Female_Participants,
sum([Total_Participants]) as Total_Participants
from [TrainingsData]
where
[Training_Type] = 'CMST'
or
[Training_Type] = 'LMST'
or
[Training_Type] = 'Community Awareness Training (CAT)'
or
[Training_Type] = 'Exposure Visit'
or
[Training_Type] = 'Literacy & Numeracy'
or
[Training_Type] = 'Orientation Training Workshop (OTW)'
or
[Training_Type] = 'TVET'
group by [District_Name],[Training_Type]
答案 0 :(得分:1)
您可以使用以下脚本来实现所需的输出,但需要对报告进行一些调整,例如替换报告部分中的District_name和Training_type。条件将是-如果District_Name ='ZZZZZ',则在显示之前,将district_name,training_type都替换为。
WITH Tab1(district_name,training_type,male_participants,female_participants,total_participants)
AS
(
SELECT 'Jhal MAgsi','CMST',10,20,30 UNION ALL
SELECT 'Khuzdar','CMST',5,5,10 UNION ALL
SELECT 'Killa Abdullah','CMST',15,15,30 UNION ALL
SELECT 'Jhal MAgsi','CAT',1,2,3 UNION ALL
SELECT 'Khuzdar','CAT',14,20,34 UNION ALL
SELECT 'Loralai','CAT',100,250,350 UNION ALL
SELECT 'Pishin','CAT',1,1,2 UNION ALL
SELECT 'Jhal MAgsi','LN',3,3,6 UNION ALL
SELECT 'Khuzdar','LN',9,100,109 UNION ALL
SELECT 'Loralai','LN',200,50,250 UNION ALL
SELECT 'Jhal MAgsi','LMST',5,8,13 UNION ALL
SELECT 'Khuzdar','LMST',9,5,14
)
SELECT district_name,training_type,male_participants,female_participants,total_participants
FROM Tab1 T1
UNION ALL
SELECT 'ZZZZZ' district_name,
training_type,
SUM(T1.male_participants) male_participants,
SUM(T1.female_participants) female_participants,
SUM(T1.total_participants) total_participants
FROM tab1 T1
GROUP BY training_type
ORDER BY 2,1
输出为-
district_name training_type male_participants female_participants total_participants
Jhal MAgsi CAT 1 2 3
Khuzdar CAT 14 20 34
Loralai CAT 100 250 350
Pishin CAT 1 1 2
ZZZZZ CAT 116 273 389
Jhal MAgsi CMST 10 20 30
Khuzdar CMST 5 5 10
Killa Abdullah CMST 15 15 30
ZZZZZ CMST 30 40 70
Jhal MAgsi LMST 5 8 13
Khuzdar LMST 9 5 14
ZZZZZ LMST 14 13 27
Jhal MAgsi LN 3 3 6
Khuzdar LN 9 100 109
Loralai LN 200 50 250
ZZZZZ LN 212 153 365