SQL Server - вычисляемая сумма столбца из другой таблицы - PullRequest
2 голосов
/ 31 марта 2011

У меня есть две таблицы (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, а не просто сумму всего столбца.

Приветствия

Ответы [ 4 ]

1 голос
/ 31 марта 2011

Ниже будет возвращена сумма Qty_In_Stock для всех элементов с хотя бы одной записью Item_type.

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

Отредактированный

Возможно, это то, что вы хотите. Это вернет индивидуальную сумму элементов (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
1 голос
/ 31 марта 2011

Предполагая, что вы пытаетесь показать доступное количество для каждого типа элемента: я бы порекомендовал создать представление, отображающее эту информацию:
Вам нужно будет "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
1 голос
/ 31 марта 2011

Нет соединения для таблицы 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
0 голосов
/ 05 февраля 2013

Вычисляемый столбец вычисляется из выражения, которое может использовать другие столбцы в той же таблице . Выражение может быть именем не вычисляемого столбца, константой, функцией и любой их комбинацией, связанной одним или несколькими операторами. Выражение не может быть подзапросом .

...