2
재고 목록이 있습니다. 재고 테이블 SQL :매출 원가 계산 방법
CREATE TABLE INVENTORY
(
INVENTORY_ID SERIAL PRIMARY KEY,
INVENTORY_DATE date NOT NULL,
ITEM_NAME text NOT NULL,
PURCHASED_QUANTITY INTEGER DEFAULT 0,
SOLD_QUANTITY INTEGER DEFAULT 0,
AMOUNT MONEY NOT NULL,
TOTAL MONEY NOT NULL
);
INSERT INTO INVENTORY(INVENTORY_DATE, ITEM_NAME, PURCHASED_QUANTITY, SOLD_QUANTITY, AMOUNT, TOTAL)
SELECT '1/1/2014'::date, 'ITEM-001', 10, NULL, 100, 1000 UNION ALL
SELECT '1/2/2014'::date, 'ITEM-001', NULL, 2, 200, 400 UNION ALL
SELECT '1/3/2014'::date, 'ITEM-001', 20, NULL, 110, 2200 UNION ALL
SELECT '1/4/2014'::date, 'ITEM-001', NULL, 4, 200, 800 UNION ALL
SELECT '1/5/2014'::date, 'ITEM-001', 20, NULL, 80, 1600;
표는이 같은 기능을 만들려고하고
SELECT * FROM INVENTORY;
INVENTORY_DATE ITEM_NAME PURCHASED_QUANTITY SOLD QUANTITY AMOUNT TOTAL
-----------------------------------------------------------------------------------------
1/1/2014 ITEM-001 10 $100 $1000
1/2/2014 ITEM-001 2 $200 $400
1/3/2014 ITEM-001 20 $110 $2200
1/4/2014 ITEM-001 4 $200 $800
1/5/2014 ITEM-001 20 $80 $1600
: 그래서
CREATE FUNCTION GET_FIFO_COGS(ITEM_NAME TEXT, QUANTITY INTEGER)
RETURNS MONEY
AS
$$
BEGIN
END
$$
LANGUAGE "PLPGSQL";
것을, 내가 할 수있는 :
SELECT * FROM GET_FIFO_COGS('ITEM-001', 4) --> $400
--Remaining 4. Each for $100.
SELECT * FROM GET_FIFO_COGS('ITEM-001', 12) --> $1280
--4 for $100, 8 for 110.
SELECT * FROM GET_FIFO_COGS('ITEM-001', 34) --> $3400
--4 for $100, 20 for $110, 10 for $80.
I 이 질문을 향상시킬 수있는 바른 길. 나는 SQL을 배우고 있는데,이 문제는 나에게 문제를 일으키고 있으며 나는이 문제를 해결할 수 없다.
감사로 사용합니다. 완벽하게 작동합니다. 인벤토리별로 내림차순으로 주문하면 LIFO 값을 얻을 수 있습니까? – Nancy
@Nancy 분석하지 않았음에도 불구하고 그렇습니다. –
감사합니다. 나는 여기서 시험 할 것이다. + (1) 코드를 멋지게 설명합니다. – Nancy