首页 > 解决方案 > 在 SQL 中,如何根据另一列中的字符串值对一列中的数值求和

问题描述

我希望我的程序返回AcceptedProductsby的总数PlantName

有人可以帮我纠正我的程序吗?

CREATE PROCEDURE spAcceptedByCountry @Year INT, @Month INT
AS
    SELECT      CountryCode,
                CountryName,
                REPLACE(SUBSTRING([PlantName], CHARINDEX('-', [PlantName]), LEN([PlantName])), '-', '') AS [PlantName],
                SUM(AcceptedProducts) AS AcceptedProducts 
    FROM        vAcceptedByCountry
    WHERE       YEAR(DateOfManufacture) = @Year AND MONTH(DateOfManufacture) = @Month
    GROUP BY    CountryCode,
                CountryName,
                PlantName,
                AcceptedProducts
    ORDER BY    CountryCode;
GO

谢谢您的帮助。亲切的问候。

标签: sql

解决方案


尝试这个:

CREATE PROCEDURE spAcceptedByCountry @Year INT, @Month INT
AS
    SELECT      CountryCode,
                CountryName,
                REPLACE(SUBSTRING([PlantName], CHARINDEX('-', [PlantName]), LEN([PlantName])), '-', '') AS [PlantName],
                SUM(AcceptedProducts) AS AcceptedProducts 
    FROM        vAcceptedByCountry
    WHERE       YEAR(DateOfManufacture) = @Year AND MONTH(DateOfManufacture) = @Month
    GROUP BY   1, 2, 3
    ORDER BY    CountryCode;
GO

您不想按您尝试计算的聚合进行分组。

因此,现在您正在计算每个国家/地区代码/国家/地区名称/植物名称的可接受产品,其中植物名称不是列,而是选择子句中的项目。


推荐阅读