UPDATE PROD
SET PROD_SALE = NULL
WHERE PROD_LGU ='P301'
Alias는 상품번호, 상품명, 판매가격, 할인가격, 비고
SELECT PROD_ID AS 상품번호,
PROD_NAME AS 상품명,
PROD_PRICE AS 판매가격,
PROD_SALE AS 할인가격,
NVL(PROD_SALE,'단종상품') AS 비고
FROM PROD;
ERROR : ORA-01722:invalid number
왜 에러메세지가 뜰까? >> PROD_SALE과 단종상품의 데이터타입이 안맞음. 단종상품이라는 문자열은 숫자로 바뀔수가 없는 자료 = INVALID NUMBER
해결방법 : PROD_SALE을 문자열로 바꿔준다
SELECT PROD_ID AS 상품번호,
PROD_NAME AS 상품명,
PROD_PRICE AS 판매가격,
PROD_SALE AS 할인가격,
NVL(TO_CHAR(PROD_SALE),'단종상품') AS 비고
FROM PROD;
보기 좀 안좋으니까 정렬
SELECT PROD_ID AS 상품번호,
PROD_NAME AS 상품명,
PROD_PRICE AS 판매가격,
PROD_SALE AS 할인가격,
NVL(TO_CHAR(PROD_SALE,'99,999,999'),LPAD('단종상품',12,' ')) AS 비고
FROM PROD;
SELECT DISTINCT CART_PROD
FROM CART
WHERE CART_NO LIKE '200506%'
Alias는 상품코드, 상품명, 판매수량, 판매금액
SELECT B.PROD_ID AS 상품코드,
B.PROD_NAME AS 상품명,
SUM(A.CART_QTY) AS 판매수량,
SUM(A.CART_QTY*B.PROD_PRICE) AS 판매금액
FROM CART A
RIGHT OUTER JOIN PROD B ON (A.CART_PROD=B.PROD_ID AND
A.CART_NO LIKE '200506%')
GROUP BY B.PROD_ID,B.PROD_NAME
ORDER BY 1;
GROUP BY B.PROD_ID,B.PROD_NAME
둘중하나만 써도 분류는 되지만 둘다써줘야 되는게 규칙 안그럼 오류나
NULL을 SUM해봐야 NULL이니까 팔리지 않은 품목은 다 NULL뜸
이때 NULL말고 0 쓰고싶으니까 NVL 쓰는거!
Alias는 사원번호, 사원명, 부서코드, 영업실적코드, 비고
SELECT EMPLOYEE_ID AS 사원번호,
EMP_NAME AS 사원명,
DEPARTMENT_ID AS 부서코드,
COMMISSION_PCT AS 영업실적코드,
NVL2(COMMISSION_PCT,'영업부서','영업 이외 부서(영업 실적 없음)') AS 비고
FROM HR.EMPLOYEES;
🚨 모든 NVL은 NVL2로 표현할 수 있지만 그반대는 불가능
SELECT PROD_ID AS 상품번호,
PROD_NAME AS 상품명,
PROD_PRICE AS 판매가격,
PROD_SALE AS 할인가격,
NVL2(PROD_SALE,TO_CHAR(PROD_SALE,'99,999,999'),
LPAD('단종상품',12,' ')) AS 비고
FROM PROD;
SELECT PROD_ID AS 상품번호,
PROD_NAME AS 상품명,
PROD_PRICE AS 판매가격,
PROD_SALE AS 할인가격,
NVL2(PROD_SALE,TO_CHAR(100-(PROD_SALE/PROD_PRICE*100),'99,999,999')||'%','단종상품') AS 비고
FROM PROD;
UPDATE PROD
SET PROD_SALE = PROD_COST
WHERE PROD_SALE>PROD_PRICE;
COMMIT;
Alias는 상품코드, 상품명, 매입가, 판매가, 할인판매가, 비고
SELECT PROD_ID AS 상품코드,
PROD_NAME AS 상품명,
PROD_COST AS 매입가,
PROD_PRICE AS 판매가,
PROD_SALE AS 할인판매가,
NVL2(NULLIF(PROD_COST, PROD_SALE),'정상상품','1+1상품') AS 비고
FROM PROD;