Sql 将查询结果分组为一行
我的查询返回4条记录(行),我想将所有这些记录相加为一条记录(行),但不完全确定如何实现这一点 这是我的密码Sql 将查询结果分组为一行,sql,sql-server,tsql,Sql,Sql Server,Tsql,我的查询返回4条记录(行),我想将所有这些记录相加为一条记录(行),但不完全确定如何实现这一点 这是我的密码 SELECT Tax + StudentLoans AS 'Net Income Tax', GrossNI, CASE WHEN ed.EA_Indicator_CY = 0 THEN 0 ELSE ( CASE WHEN
SELECT
Tax + StudentLoans AS 'Net Income Tax',
GrossNI,
CASE
WHEN ed.EA_Indicator_CY = 0
THEN 0
ELSE
(
CASE
WHEN (
SELECT SUM(Funding)
FROM PayrollRuns
WHERE PAYEMonth = 12 AND PYear = 2018) > 3000
)
THEN 0
ELSE 3000
END
)
END AS 'Employment Allowance',
SMP AS 'SMP Recovered',
NICompOnSMP AS 'SMP Comp',
SPPA + SPPB AS 'SPP Recovered',
SPPACompensation + SPPBCompensation AS 'SPP COMP',
SAP AS 'SAP Recovered',
SAPCompensation,
SHPP_A + SHPP_B AS 'Shpp Recovered',
SHPP_A_Compensation + SHPP_B_Compensation AS 'ShPP Comp',
Apprenticeship_Levy_Due AS 'App Levy'
FROM PayrollRuns pr
CROSS JOIN [Employer Details] ed
WHERE PAYEMonth = 12 AND pr.PYear = 2018 --RunID = '1058'
GROUP BY Tax, StudentLoans, GrossNI, SMP, NICompOnSMP,
ed.EA_Indicator_CY,
SPPACompensation, SPPBCompensation, SAPCompensation, SHPP_A_Compensation,
SHPP_B_Compensation, SPPA, SPPB, SAP, Apprenticeship_Levy_Due, SHPP_A,
SHPP_B, RunID
我附上了查询结果的图片。我要一排的总和。任何帮助都将不胜感激
您必须删除组中所有需要汇总的列。尝试此操作:将获取按RUNID分组并具有不同EA指示符的记录
SELECT SUM(Tax +StudentLoans) AS 'Net Income Tax'
,SUm(GrossNI)
,CASE
WHEN (ed.EA_Indicator_CY) = 0
THEN 0
ELSE (
CASE
WHEN (
SELECT SUM(Funding)
FROM PayrollRuns
WHERE PAYEMonth = 12
AND PYear = 2018
) > 3000
THEN 0
ELSE 3000
END
)
END AS 'Employment Allowance'
,SUM(SMP) AS 'SMP Recovered'
,SUM(NICompOnSMP) AS 'SMP Comp'
,SUM(SPPA + SPPB) AS 'SPP Recovered'
,SUM(SPPACompensation + SPPBCompensation) AS 'SPP COMP'
,SUM(SAP) AS 'SAP Recovered'
,SUM(SAPCompensation)
,SUM(SHPP_A + SHPP_B) AS 'Shpp Recovered'
,SUM(SHPP_A_Compensation) + SUM(SHPP_B_Compensation) AS 'ShPP Comp'
,Apprenticeship_Levy_Due AS 'App Levy'
FROM PayrollRuns pr
CROSS JOIN [Employer Details] ed
WHERE PAYEMonth = 12
AND pr.PYear = 2018 --RunID = '1058'
group by ed.EA_Indicator_CY,RUNID
按如下方式使用Sum()聚合函数
--如果缺少一列,可以添加它:put sum(column)[column\u alias]
select
sum(mytab.[Net Income Tax]) [sum_Net Income Tax],
sum(mytab.[GrossNI]) [sum_GrossNI],
sum(mytab.[Employment Allowance])[sum_Employment Allowance],
sum(mytab.[SMP Recovered])[sum_SMP Recovered],
sum(mytab.[ShPP Comp]) [sum_ShPP Comp],
sum(mytab.[SPP COMP]) [sum_SPP COMP],
sum(mytab.[App Levy]) [sum_App Levy],
sum(mytab.[SAPCompensation])[sum_SAPCompensation]
from(
SELECT
Tax + StudentLoans AS 'Net Income Tax',
GrossNI,
CASE
WHEN ed.EA_Indicator_CY = 0 THEN 0 ELSE
(
CASE
WHEN (
SELECT SUM(Funding)
FROM PayrollRuns
WHERE PAYEMonth = 12 AND PYear = 2018) > 3000
)
THEN 0
ELSE 3000
END
) END AS 'Employment Allowance',
SMP AS 'SMP Recovered',
NICompOnSMP AS 'SMP Comp',
SPPA + SPPB AS 'SPP Recovered',
SPPACompensation + SPPBCompensation AS 'SPP COMP',
SAP AS 'SAP Recovered',
SAPCompensation,
SHPP_A + SHPP_B AS 'Shpp Recovered',
SHPP_A_Compensation + SHPP_B_Compensation AS 'ShPP Comp',
Apprenticeship_Levy_Due AS 'App Levy'
FROM PayrollRuns pr
CROSS JOIN [Employer Details] ed
WHERE PAYEMonth = 12 AND pr.PYear = 2018 --RunID = '1058'
GROUP BY Tax, StudentLoans, GrossNI, SMP, NICompOnSMP,
ed.EA_Indicator_CY,
SPPACompensation, SPPBCompensation, SAPCompensation, SHPP_A_Compensation,
SHPP_B_Compensation, SPPA, SPPB, SAP, Apprenticeship_Levy_Due, SHPP_A,
SHPP_B, RunID
) mytab
左对齐SQL非常难读(和写…)@jarlh我对SQL很陌生,什么是左对齐SQL?他指的是你不使用空格缩进代码。就像我会为你编辑一样。@GeorgeMenoutis哦,好吧,我现在明白你的意思了。这就是我编写所有查询的方式,从未意识到这是一种不好的做法。如果您只想有一行,请从
分组中删除这三行中具有不同值的所有字段。请为您的答案提供一些注释。感谢您的回答,如果我只想让就业津贴成为SELECT语句中的案例返回的值,该怎么办?0或3000?这将是“就业津贴”的总和
select
sum(mytab.[Net Income Tax]) [sum_Net Income Tax],
sum(mytab.[GrossNI]) [sum_GrossNI],
sum(mytab.[Employment Allowance])[sum_Employment Allowance],
sum(mytab.[SMP Recovered])[sum_SMP Recovered],
sum(mytab.[ShPP Comp]) [sum_ShPP Comp],
sum(mytab.[SPP COMP]) [sum_SPP COMP],
sum(mytab.[App Levy]) [sum_App Levy],
sum(mytab.[SAPCompensation])[sum_SAPCompensation]
from(
SELECT
Tax + StudentLoans AS 'Net Income Tax',
GrossNI,
CASE
WHEN ed.EA_Indicator_CY = 0 THEN 0 ELSE
(
CASE
WHEN (
SELECT SUM(Funding)
FROM PayrollRuns
WHERE PAYEMonth = 12 AND PYear = 2018) > 3000
)
THEN 0
ELSE 3000
END
) END AS 'Employment Allowance',
SMP AS 'SMP Recovered',
NICompOnSMP AS 'SMP Comp',
SPPA + SPPB AS 'SPP Recovered',
SPPACompensation + SPPBCompensation AS 'SPP COMP',
SAP AS 'SAP Recovered',
SAPCompensation,
SHPP_A + SHPP_B AS 'Shpp Recovered',
SHPP_A_Compensation + SHPP_B_Compensation AS 'ShPP Comp',
Apprenticeship_Levy_Due AS 'App Levy'
FROM PayrollRuns pr
CROSS JOIN [Employer Details] ed
WHERE PAYEMonth = 12 AND pr.PYear = 2018 --RunID = '1058'
GROUP BY Tax, StudentLoans, GrossNI, SMP, NICompOnSMP,
ed.EA_Indicator_CY,
SPPACompensation, SPPBCompensation, SAPCompensation, SHPP_A_Compensation,
SHPP_B_Compensation, SPPA, SPPB, SAP, Apprenticeship_Levy_Due, SHPP_A,
SHPP_B, RunID
) mytab