使用触发器在Postgresql中的总库存

时间:2018-09-12 16:40:00

标签: sql postgresql

我有一个RFID系统,可以记录进出的标签。 将每个标签记录在一个表中(事务)。标题表(transaction_headers)具有有关库存进出的信息。我将使用前8个字符作为前缀来标识广告资源。然后,我想计算出入的情况。将要添加的内容添加到库存中,然后减去要输出的内容。

我已经开始使用此SQL来计算出入的内容。我将如何使用它来获取总库存?以及如何存储这些数据。

SELECT Left(encoded_value,8) AS Itemnumber
      ,Count(transactions.encoded_value) AS CountOfencoded_value
      ,transaction_headers.loc_id AS Gate
      ,CASE WHEN transaction_headers.loc_id  = 1
            THEN Count(transactions.encoded_value) * -1
            ELSE  Count(transactions.encoded_value)
            END AS Inventory
FROM transactions 
INNER JOIN transaction_headers ON transactions.id = transaction_headers.id
GROUP BY Left(encoded_value,8), transaction_headers.loc_id
HAVING (((Left(encoded_value,8)) Like 'CCE1%') AND ((transaction_headers.loc_id) Is Not Null));

交易记录表

id  transaction_header_id   encoded_value
107039  6294    CCE1C0360000000017120ACA
107038  6294    CCE1C0360000000017120A8F
107037  6294    CCE1C0360000000017120418
107036  6294    CCE1C0360000000017120B5F
107035  6294    CCE1C0360000000018030802
107034  6294    CCE1E5000000000018090041
107033  6294    CCE1C0360000000018061053
106980  6295    CCE1C0360000000017120A8D
106979  6295    CCE1C0360000000018060670
106978  6295    CCE1C0360000000018060996
106977  6295    CCE1E5000000000018080331

标题表

id  loc_id
6295    1
6294    2

所需的结果类似

院子里的存货是:

ItemNumber     count
CCE1C036       3
CCE1E500       0

我们一天将完成数千笔交易,并提供约50个库存代码

0 个答案:

没有答案