按条款在组中检索的每个类别的合计总和

时间:2019-06-12 11:36:09

标签: sql sql-server asp.net-mvc entity-framework

enter image description here

“我有一个像这样的表,我使用了group by和sum()函数来计算 在不同地区举行的每种训练类型的总参与者。现在我要做的是我希望每种训练类型类别的总和,例如:对于CMST,我希望CMST之后的男性,女性和总参与者的总和以及其他所有类别像这样:“

enter image description here

我正在视图表中显示此表并使用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]

enter image description here

1 个答案:

答案 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