SQL 要创建总计行的行总和

SQL sum of rows to create Total row

下午好,我在 SQL 中有以下输出,每个代码添加都需要第三行:

我想添加总行如下:

提前谢谢你。如果您需要代码,我可以稍后提供。

DECLARE @FY_Ending INT
SET @FY_Ending = 2020

 SELECT
    CAST(DSS_CORPORATE.DBO.ODS_LOCAL_AUTHORITY_CODES.LA_CODE AS INT) AS CASSR_CODE
INTO
    #MAPPING
FROM
    DSS_CORPORATE.DBO.ODS_LOCAL_AUTHORITY_CODES
WHERE
    ORGANISATION_SUBTYPE_CODE IN ('A','E','H','J')
    AND BUSINESS_END_DATE IS NULL
    AND HIGH_LEVEL_HA_CODE <> 'Q99'
    AND LA_CODE <> '203' and LA_CODE <> '612' and LA_CODE <> '810' and LA_CODE <> '811'
    AND ((@FY_Ending < 2020 and LA_Code not in (738)) or (@FY_Ending >= 2020 and LA_Code not in (810,811)))

SELECT
    CASE    
        WHEN DATA.CASSR_CODE IS NULL THEN #MAPPING.CASSR_CODE
        ELSE DATA.CASSR_CODE
        END AS 'CASSR_CODE',    
        DATA.AgeBand_Key,
        SOCC_SALT.IC.V3_DIM_AGEBAND.AgeBand,
        DATA.COUNT
FROM
    (
    SELECT
        SOCC_SALT.IC.V3_SOCC_SALT_FACT.CASSR_CODE,
        SOCC_SALT.IC.V3_SOCC_SALT_FACT.ItemType,
        SOCC_SALT.IC.V3_SOCC_SALT_FACT.AgeBand_Key,
        SUM(SOCC_SALT.IC.V3_SOCC_SALT_FACT.ItemValue) AS 'COUNT'
    FROM
        SOCC_SALT.IC.V3_SOCC_SALT_FACT
    WHERE
        SOCC_SALT.IC.V3_SOCC_SALT_FACT.FY_Ending = @FY_Ending
        AND SOCC_SALT.IC.V3_SOCC_SALT_FACT.ClientType_Key = 1
        AND SOCC_SALT.IC.V3_SOCC_SALT_FACT.AgeBand_Key IN (2,3)
        AND SOCC_SALT.IC.V3_SOCC_SALT_FACT.SequelToSupportRequest_Key IS NOT NULL
        AND SOCC_SALT.IC.V3_SOCC_SALT_FACT.SequelToSupportRequest_Key <> 7
    GROUP BY
        SOCC_SALT.IC.V3_SOCC_SALT_FACT.CASSR_CODE,
        SOCC_SALT.IC.V3_SOCC_SALT_FACT.ItemType,
        SOCC_SALT.IC.V3_SOCC_SALT_FACT.AgeBand_Key) DATA

LEFT JOIN SOCC_SALT.IC.V3_DIM_AGEBAND ON DATA.AgeBand_Key = SOCC_SALT.IC.V3_DIM_AGEBAND.AgeBand_KEY
FULL OUTER JOIN #MAPPING ON DATA.CASSR_CODE = #MAPPING.CASSR_CODE

Order by 1,4 asc


DROP TABLE #MAPPING

此致, 安德鲁

在 MSSQL 中你可以使用 ROLLUP,

在 MySQL 你可以使用 ROLLUP,

在 PostgreSQL 中您可以使用 ROLLUP

假设您的样本数据是 table,您可以像这样使用纯 sql 获得总数:

select CASSR_CODE, AgeBand_Key, AgeBand, [count] from your_sample_table
union all
select CASSR_CODE, 4 as AgeBand_Key, 'Total' as AgeBand, sum([count])
from your_sample_table
group by CASSR_CODE
order by CASSR_CODE, AgeBand_Key

根据您的 DBMS,@Luuk 分享的链接中还有其他更好的选择