我有两个表(Items
和Item_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
- 而不仅仅是整列的总和。
干杯
答案 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)
计算列是根据表达式计算的,该表达式可以使用同一表中的其他列 。表达式可以是非计算列名,常量,函数以及由一个或多个运算符连接的任何组合。 表达式不能是子查询。