SQL Server - 来自不同表的计算列Sum

时间:2011-03-30 22:34:29

标签: sql sum calculated-columns

我有两个表(ItemsItem_Types),我希望在Item_Types表的计算列中执行以下操作:

SELECT SUM(Items.Qty_In_Stock) FROM Items WHERE Items.Item_Type = Item_Types.ID

但是Management Studio并不喜欢它。

我该怎么做?或者我的语法错了?我对SQL不太满意。

由于

编辑:我认为我需要更加具体。

一个ItemType可以包含多个Items

每个Item都有一个Qty_In_Stock字段。

我希望得到所有Qty_In_Stock字段的总和,其中Items.Item_Type = Item_Types.ID - 而不仅仅是整列的总和。

干杯

4 个答案:

答案 0 :(得分:1)

Item_types表没有连接。加入一个你应该没问题。

SELECT SUM(Items.Qty_In_Stock) from Items INNER JOIN Item_Types ON Items.Item_Type = Item_Types.ID GROUP BY Items.Item_Type

答案 1 :(得分:1)

下面将返回包含至少一个Item_type记录的所有项目的Qty_In_Stock之和。

SELECT 
   SUM(i.Qty_In_Stock)
FROM Items i
INNER JOIN Item_types it on i.Item_Type = it.ID

如果每个项目都没有至少一个Item_type记录,则可能需要使用左连接示例:

SELECT 
   SUM(i.Qty_In_Stock)
FROM Items i
LEFT JOIN Item_types it on i.Item_Type = it.ID

<强>被修改

也许这就是你想要的。这将为每个Item_type ID返回单独的Items(qty_in_stock)总和

SELECT 
   it.Id,
   SUM(i.Qty_In_Stock)
FROM Items i
INNER JOIN Item_types it on i.Item_Type = it.ID 
GROUP BY it.Id

答案 2 :(得分:1)

假设您尝试显示每种商品类型的可用数量: 我建议创建一个显示此信息的视图:
您需要“GROUP BY”项目类型。

CREATE VIEW Item_Types_Qty_In_Stock
AS

SELECT it.ID, SUM(i.Qty_In_Stock) AS QtyInStock FROM Items i
INNER JOIN Item_Types it ON i.Item_Type = it.ID 
GROUP BY it.ID
GO

创建视图后,您可以像查询表一样查询它:

SELECT * FROM Item_Types_Qty_In_Stock

答案 3 :(得分:0)

计算列是根据表达式计算的,该表达式可以使用同一表中的其他列 。表达式可以是非计算列名,常量,函数以及由一个或多个运算符连接的任何组合。 表达式不能是子查询