Teradata에서 두 개의 테이블로 작업하고 있으며 저장소 번호, 판매 일수 및 각 상점 번호의 총 일수로 모든 활성 항목을 쿼리하려고합니다. 현재 쿼리 설정은 적절한 정보를 보여주는 하나의 행을 제공하는 대신 SKU가 두 행의 데이터를 제공합니다.JOIN 및 CASE 쿼리 결과 중복
표 1 : 클래스 번호, 클래스 이름, 상태 및 저장 데이터를 표시합니다.
Store Item Class Number Class Name Status
100 Apple 10 Red Fruit Active
200 Apple 10 Red Fruit Active
100 Banana 12 Yellow Fruit Active
200 Banana 12 Yellow Fruit Active
100 Pear 14 Green Fruit Active
200 Pear 14 Green Fruit Active
100 Beans 20 Green Vegetable Discontinued
200 Beans 20 Green Vegetable Active
표 2 : 저장 및 항목에 의해 판매하는 전체 일을 표시
Store Item Total Days to sell
100 Apple 4
200 Apple 1
100 Banana 2
200 Banana 4
100 Pear 3
200 Pear 6
100 Beans NULL
200 Beans 4
표 3 : 현재 쿼리 데이터가 될 수 있도록
다음Item Class Number Class Name Total Days to sell Store 100 Store 200
Apple 10 Red Fruit 5 4 NULL
Apple 10 Red Fruit 5 NULL 1
Banana 12 Yellow Fruit 6 2 NULL
Banana 12 Yellow Fruit 6 NULL 4
Pear 14 Green Fruit 9 3 NULL
Pear 14 Green Fruit 9 NULL 6
Beans 20 Green Vegetable 4 NULL 4
내가 찾고 있어요되는 방법 결과 구성 :
Item Class Number Class Name Total Days to sell Store 100 Store 200
Apple 10 Red Fruit 5 4 1
Banana 12 Yellow Fruit 6 2 4
Pear 14 Green Fruit 9 3 6
Beans 20 Green Vegetable 4 NULL 4
커서 임대 검색어 :
SELECT DISTINCT
A.ITEM,
A.CLASS_NUMBER,
A.CLASS_NAME,
SUM(B.TOTAL_DAYS_TO_SELL),
CASE
WHEN B.STORE=100 THEN B.TOTAL_DAYS_TO_SELL
ELSE NULL
END AS STORE 100,
CASE
WHEN B.STORE=200 THEN B.TOTAL_DAYS_TO_SELL
ELSE NULL
END AS STORE 200
FROM TABLE 1 A
RIGHT JOIN TABLE 2 B
ON B.ITEM=A.ITEM
WHERE A.STATUS='ACTIVE'
GROUP BY
A.ITEM,
A.CLASS_NUMBER,
A.CLASS_NAME,
STORE 100,
STORE 200
ORDER BY
A.CLASS_NUMBER ASC;
당신이 정보
감사에 관한 질문이 있으면 알려 주시기 바랍니다!
마지막 두 사례 문을 'Sum()'으로 붙잡아서 그룹에서 제거하십시오. – JNevill
case 문 주변의 함수는 중복 된 행을 수정했지만 판매 할 총 일수는 이제 두 배가됩니다. 이 고칠 수 있습니까? – Hery0502