首页 > 解决方案 > 在查询中将特定行添加在一起

问题描述

我正在尝试编写一个查询来显示产品线中商品的总销售价值。对于其中一些项目,只需要一行即可返回答案。对于其他人,需要将两行或多行相加才能获得正确的值。问题是某些项目的项目 ID 并未表明它们应该放在一起(项目 ID 1030、1031、5032 和 1033 可能放在一起)。没有我可以将这些分组的列,所以我想我必须手动完成。

反正有没有在同一列中添加特定值?

这是我正在谈论的内容的一个小演示。在第一列中,我有项目的 ID,第二列包含值。我需要将同一产品线中的行的值相加。不幸的是,项目 ID 只是有时相似,但有时 ID 与其他 ID 不匹配。

https://imgur.com/GwydiDK

标签: sqlsql-server

解决方案


您应该添加一个将产品线与项目相关联的第二个表,将其连接到您的销售表,并在 [Value of Sold] 列上进行 SUM。这是一个 SQL Server 示例,以及 SQL ServerMySQL fiddles。

CREATE TABLE ProductLines ([Item ID] INT, [Product Line #] INT);
INSERT INTO ProductLines VALUES 
(1010, 1),
(1011, 1),
(1012, 1),
(1020, 2),
(1030, 3),
(1031, 3),
(5032, 3),
(1033, 3),
(1040, 4),
(7041, 4),
(2040, 1);

SELECT [ProductLines].[Product Line #], SUM([Value of Sold]) AS [Total Sold]
FROM dbo.Sales 
INNER JOIN ProductLines ON [ProductLines].[Item ID] = Sales.[Item ID]
GROUP BY [Product Line #]

回报:

Product Line # Total Sold
-------------- -----------
1              54
2              9
3              42
4              10

编辑:由于您没有创建表的权限,请查看是否可以创建表变量而不是持久化表:

DECLARE @ProductLines TABLE ([Item ID] INT, [Product Line #] INT)
INSERT INTO @ProductLines VALUES 
(1010, 1),
(1011, 1),
(1012, 1),
(1020, 2),
(1030, 3),
(1031, 3),
(5032, 3),
(1033, 3),
(1040, 4),
(7041, 4),
(2040, 1);

SELECT ProductLines.[Product Line #], SUM([Value of Sold]) AS [Total Sold]
FROM dbo.Sales 
INNER JOIN @ProductLines ProductLines ON ProductLines.[Item ID] = Sales.[Item ID]
GROUP BY [Product Line #]

推荐阅读