tbl_brands
및 이라는 두 개의 테이블이 있습니다 tbl_counter_stock
. 에서 tbl_brands
브랜드 ID와 브랜드 이름의 키 - 값 쌍은있다. 에서 tbl_counter_stock
열처럼 brnd_id
, 2000ml
, 1000ml
, stock
, stock_date
. 각 행은 O-Opening, R-Received, S-Sales, C-Closing과 같은 다른 주식을 가진 리큐어 브랜드를 나타냅니다.이 테이블에서 각 브랜드의 종가에 대한 레코드를 가져오고 C (종료 재고 )이 표에없는 경우 해당 브랜드의 O (Opening Stock)를 가져오고 싶습니다. 해당 브랜드에 대해 마감 재고가 이미있는 경우 시작 및 마감 재고 값을 모두 얻습니다. 그리고 이것은 나에게 바람직한 결과가 아닙니다. C (종가)가없는 경우에만 O (종가)를 받고 싶습니다. 미리 감사드립니다.
SELECT
A.brnd_id,A.brnd_name,'2000ml' capacity,COALESCE(B.`2000ml`,0) bottles,
B.stock,B.stock_date
FROM tbl_brands A
left OUTER JOIN
tbl_counter_stock AS B
on A.BRND_ID=B.BRND_ID
AND B.STOCK IN('O','C')
AND B.STOCK_DATE='2017-01-18'
테이블을 만들 때 솔루션이 이해하기 더 쉽다고 생각합니다.
Closing_Stock 만있는 테이블 (table_C)을 만듭니다 (WHERE CLAUSE가 B.STOCK = 'C'로 축소됨) 그런 다음 tbl_brands에서 table_C로 왼쪽 조인하여 모든 brand_ids를 찾습니다. 종가 레코드가 누락 된 경우 tbl_counter_stock (WHERE B.STOCK = 'O')에 가입하여 누락 된 ID를 삽입합니다.
CREATE TABLE brand_stock_overview (Key brnd_id(brnd_id))
SELECT A.brnd_id,A.brnd_name,'2000ml' capacity,COALESCE(B.`2000ml`,0)
bottles, B.stock,B.stock_date
FROM tbl_brands A
LEFT JOIN tbl_counter_stock AS B ON(A.BRND_ID=B.BRND_ID)
WHERE B.STOCK ='C'
AND B.STOCK_DATE='2017-01-18';
INSERT INTO brand_stock_overview
SELECT A.brnd_id,A.brnd_name,'2000ml' capacity,COALESCE(B.`2000ml`,0)
bottles, B.stock, B.stock_date
FROM tbl_brands A
LEFT JOIN tbl_counter_stock AS B ON(A.BRND_ID=B.BRND_ID)
LEFT JOIN brand_stock_overview C ON(A.BRND_ID=C.BRND_ID)
where B.STOCK='O' AND C.BRND_ID IS NULL
AND B.STOCK_DATE='2017-01-18';
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다