Общий инвентарь в Postgresql с использованием триггера - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть система RFID, которая записывает входящие теги и выходящие теги. Запись каждого тега в таблицу (транзакции). В таблице заголовков (action_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 инвентарных кодов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...