sql - 在查询中将特定行添加在一起
问题描述
我正在尝试编写一个查询来显示产品线中商品的总销售价值。对于其中一些项目,只需要一行即可返回答案。对于其他人,需要将两行或多行相加才能获得正确的值。问题是某些项目的项目 ID 并未表明它们应该放在一起(项目 ID 1030、1031、5032 和 1033 可能放在一起)。没有我可以将这些分组的列,所以我想我必须手动完成。
反正有没有在同一列中添加特定值?
这是我正在谈论的内容的一个小演示。在第一列中,我有项目的 ID,第二列包含值。我需要将同一产品线中的行的值相加。不幸的是,项目 ID 只是有时相似,但有时 ID 与其他 ID 不匹配。
解决方案
您应该添加一个将产品线与项目相关联的第二个表,将其连接到您的销售表,并在 [Value of Sold] 列上进行 SUM。这是一个 SQL Server 示例,以及 SQL Server和MySQL 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 #]
推荐阅读
- scala - 接受三个字符串参数的 Scala 计算器
- javascript - 即使在 javascript 中刷新浏览器后,我也希望保留“向左旋转”的值
- php - 在客户地址表magento 2中两次保存相同的地址
- c# - 无法将 long 类型转换为 T,这里 T 是 Enum 的值
- excel - 我需要一个解决方案来从产品表中选择正确的费率并将过滤后的费率粘贴到预期费率结果表
- java - 如何在要支持的 QPS 的基础上对 Kafka Consumer 进行节流?
- python - 在字符串中搜索逗号(,),如果存在逗号,则在 python 中打印逗号之后的直接单词
- caffe - 如何在 Caffe 中实现 CNN 集合?
- pytorch - PyTorch 将运算符映射到函数
- ruby - 如何通过 ruby 从单页应用程序中读取数据