Я немного новичок в t-sql. У меня возникают проблемы с включением значений строк в переменные на основе значений других столбцов.
В таблице базы данных есть одно поле количества, в котором все количества количеств хранятся в виде положительных сумм. Существует отдельный столбец, который представляет направление транзакции. Направление 1 означает, что это входящий. Направление -1 означает, что это входящий. Неттинг входящего кол-ва по отношению к исходящему обеспечивает чистое оставшееся количество.
Мне удалось разделить входящие и исходящие данные в отдельные столбцы. Я присвоил псевдоним каждому столбцу (InQty и OutQty), чтобы дать читателю правильный контекст. Последнее, что мне нужно, - это вычесть две суммы (то есть InQty минус OutQty) в другой столбец с меткой NetQty. Я пытался использовать переменные, с и без оператора case, но ничего, что я пробовал, не работает. Я упал, как будто очень близко, но, похоже, просто не могу получить правильную структуру запроса.
Вывод, который я пытаюсь получить, выглядит следующим образом:
ItemID ItemPartNumber InQty OutQty NetQty
1140797106360931 ACRFCO 5.000000 2.000000
Ниже приведен запрос, который я разработал до сих пор.
Строки комментариев помогут мне помочьв разработке запроса.
Select convert(varchar(max), i.itemid) as ItemID
,ItemPartNumber As ItemPartNumber
,Sum(case when Direction = 1 Then TransactionQty end) As InQty
,Sum(case when Direction = -1 Then TransactionQty end) as OutQty
FROM InventoryTransaction IT
join item i on i.itemid = it.ItemID
group by i.itemid, it.ItemPartNumber
Order by it.ItemPartNumber