Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将查询结果分组为一行_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 将查询结果分组为一行

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

我的查询返回4条记录(行),我想将所有这些记录相加为一条记录(行),但不完全确定如何实现这一点

这是我的密码

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