Как извлечь текущий запас из таблицы в SQL Server 2000 - PullRequest
0 голосов
/ 20 декабря 2011

Я делаю и приложение в vb.net с использованием Visual Studio 2005 и SQL Server 2000. Я должен отслеживать акции.Акция при добавлении имеет статус «Продано».При удалении некоторой акции транзакция сохраняет статус акции как «Продано».Статус также может быть «Истек» для акции, срок годности которой истек, и когда заявка истекла для компании, тогда статус «заявлен» ... Теперь из всего этого я хочу извлечь запас, который в данный момент находится в распоряжении.На базовом уровне с двумя значениями состояния, т.е. «Продано» и «Продано», я использую следующий запрос для извлечения результатов из базы данных, но он не рассчитывает разницу между проданными и непроданными товарами ...

 select category, item_name, 
        sum(crtns_added) as Cartons, sum(pieces_added) as Pieces, 
        sum(total_price) 
 from Stock 
 where status = 'unsold' 
 group by category, item_name

Я тоже пробовал это

select category, item_name, (sum(crtns_added) - sum(crtns_removed)) as Cartons, 
       (sum(pieces_added)- sum(pieces_removed)) as Pieces, 
       sum(total_price) 
from Stock 
where status = 'unsold' or status = 'sold' 
group by category, item_name

1 Ответ

0 голосов
/ 20 декабря 2011

Вам нужно использовать два дополнительных выбора, чтобы выбрать элементы с соответствующими значениями - что-то вроде:

SELECT
    category, 
    item_name, 
    (SELECT SUM(crtns_added) FROM dbo.Stock s1 WHERE s1.ItemID = s.ItemID AND s1.Status = 'unsold') 'Unsold Cartons',
    (SELECT SUM(crtns_added) FROM dbo.Stock s2 WHERE s2.ItemID = s.ItemID AND s2.Status = 'sold') 'Sold Cartons'
 FROM 
    dbo.Stock s
 GROUP BY 
    category, item_name

Это предполагает, что есть столбец itemId, который однозначно идентифицирует ваши элементы - своего родаосновной ключ.С помощью этой техники вы можете получить сумму проданных или непроданных коробок или кусков - все, что вам нужно.

...