반응형
쿼리 결과에서 실제 날짜에 이전 날짜의 값 추가
CREATE TABLE logistics (
id int auto_increment primary key,
flow_date DATE,
flow_type VARCHAR(255),
flow_quantity INT
);
INSERT INTO logistics
(flow_date, flow_type, flow_quantity
)
VALUES
("2020-04-18", "inbound", "500"),
("2020-04-18", "outbound", "400"),
("2020-04-18", "stock", "100"),
("2020-04-19", "inbound", "800"),
("2020-04-19", "outbound", "650"),
("2020-04-19", "stock", "250"),
("2020-04-20", "inbound", "730"),
("2020-04-20", "outbound", "600"),
("2020-04-20", "stock", "380"),
("2020-04-21", "inbound", "420"),
("2020-04-21", "outbound","370"),
("2020-04-21", "stock", "430");
예상 결과:
flow_date stock_yesterday inbound outbound stock_today
2020-04-18 0 500 -400 100
2020-04-19 100 800 -650 250
2020-04-20 250 730 -600 380
2020-04-21 380 420 -370 430
기본적으로, 제 결과에서 저는 다음 시간대를 보여드리고 싶습니다.stock_yesterday + inbound - outbound = stock_today
.
따라서 기존 테이블을 다음과 같이 변경해야 합니다.
더flow_types
로 사용됩니다.columns
결과적으로
더stock_yesterday
그것은flow_quantity
의flow_type
stock
그 전날의
기타 모든flow_types
동일한 것flow_date
.
지금까지 저는 이 질문을 생각해 냈지만 작동하지 않았습니다.
SELECT
flow_date,
(CASE WHEN flow_type = "inbound" THEN flow_quantity END) AS inbound,
(CASE WHEN flow_type = "outbound" THEN flow_quantity END) AS outbound,
(CASE WHEN flow_type = "stock" THEN flow_quantity END) AS stock_today
FROM logistics
GROUP BY 1;
다음만 표시됩니다.inbound
.
저는 또한 어떻게 추가할 수 있는지 전혀 모르겠습니다.stock_yesterday
질문에 대해서는
예상 결과를 얻으려면 쿼리에서 무엇을 변경해야 합니까?
창 기능 및 집계를 사용할 수 있습니다.
select
flow_date,
sum(inbound + outbound)
over(order by flow_date rows between unbounded preceding and 1 preceding) stock_yesterday,
inbound,
outbound,
sum(inbound + outbound) over(order by flow_date) stock_today
from (
select
flow_date,
sum(case when flow_type = 'inbound' then flow_quantity else 0 end) inbound,
sum(case when flow_type = 'outbound' then -flow_quantity else 0 end) outbound
from logistics
group by flow_date
) t
order by flow_date
하위 쿼리는 꼭 필요한 것은 아니지만 구문을 단축하는 데 도움이 됩니다.
flow_date | stock_build | 인바운드 | 아웃바운드 | stock_today:--------- | --------------: | ------: | -------: | ----------:2020-04-18 | null | 500 | -400 | 1002020-04-19 | 100 | 800 | -650 | 2502020-04-20 | 250 | 730 | -600 | 3802020-04-21 | 380 | 420 | -370 | 430
언급URL : https://stackoverflow.com/questions/61456288/add-value-with-previous-date-to-actual-date-in-query-result
반응형
'itsource' 카테고리의 다른 글
Java에서 Oracle로 대량 삽입 (0) | 2023.08.15 |
---|---|
PowerShell ISE 내의 함수 호출 (0) | 2023.08.15 |
내 테이블만 표시하도록 SQL 개발자를 필터링하는 방법은 무엇입니까? (0) | 2023.08.15 |
구조물 변수에 값 할당 (0) | 2023.08.15 |
PDO 연결 배열로 모든 그룹 키-값 쌍 가져오기 (0) | 2023.08.15 |