我正在尝试编写一个查询,以显示产品线中所有物品的总销售额。对于其中一些项目,只需要一行即可返回答案。对于其他情况,需要将两行或更多行加在一起以获得正确的值。问题在于某些项目的项目ID并不表示它们应该一起使用(项目ID 1030、1031、5032和1033可能一起使用)。我没有专栏可以对它们进行分组,因此我认为我将需要手工完成。
是否在同一列中将特定值加在一起?
这是我在说什么的一个小例子。在第一列中,我具有该项目的ID,第二列中包含该值。我需要将同一产品系列中的行的值加在一起。不幸的是,Item ID有时只是相似的,而其他时候ID却与其他ID不匹配。
答案 0 :(得分:1)
您应该添加与产品线相关的第二张表,将其加入到销售表中,并在[已售价值]列上进行求和。这是一个SQL Server示例,以及SQL Server和MySQL的小提琴。
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 #]
答案 1 :(得分:0)
假设一个名为sales
且表名为'SaleID , 'ItemID' and
ValueOfSale and another table called 'ProductDetails
且表名为ItemID
和ProductDescription
的表,则可能会解决您的问题。
SELECT
ItemID,
SUM(ValueOfSale),
ISNULL(ProductDescription, '') AS [Product Description]
FROM
sales AS SA
LEFT JOIN ProductDetails AS PD
ON SA.ItemID = PD.ItemID
GROUP BY
ItemID, ProductDescription
这未经测试。