select date_format(SALES_DATE,'%Y-%m-%d'),PRODUCT_ID, USER_ID, SALES_AMOUNT
from
# 형식을 맞춰 통합하고 조건을 걸어서 원하는 데이터를 얻음
(SELECT ONLINE_SALE_ID, SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
UNION
SELECT OffLINE_SALE_ID, SALES_DATE, PRODUCT_ID, NULL, SALES_AMOUNT
FROM OFFLINE_SALE
) a
where date_format(SALES_DATE,'%Y%m') = 202203
order by SALES_DATE, PRODUCT_ID, USER_ID
#원하는 데이터 반환한 두 자료를 UNION하여 합침
SELECT
SUBSTR(sales_date,1,10) sales_date
, product_id
, user_id
, sales_amount
FROM ONLINE_SALE
WHERE SUBSTR(sales_date,1,7) = '2022-03'
UNION ALL
SELECT
SUBSTR(sales_date,1,10) sales_date
, product_id
-- USER_ID 값은 NULL 로 표시
, NULL user_id
, sales_amount
FROM OFFLINE_SALE
WHERE SUBSTR(sales_date,1,7) = '2022-03'
# ORDER BY는 UNION의 모든 SELECT문이 끝난뒤에 배치, 각각의 SELECT문에 적지 않은다
ORDER BY sales_date, product_id, user_id
https://school.programmers.co.kr/learn/courses/30/lessons/132201
SELECT PT_NAME, PT_NO, GEND_CD, AGE, if(TLNO is null, 'NONE', TLNO)
FROM PATIENT
WHERE AGE <= 12
AND GEND_CD = 'W'
ORDER BY AGE desc, pt_name
IF 가 WHERE에 들어가니 오류가 나왔다. WHERE 절에 들어가면 IF 조건을 고치는 것이 아니라 NULL인 값을 삭제하는 결과가 나온다.
SELECT PT_NAME, PT_NO, GEND_CD, AGE, TLNO
FROM PATIENT
WHERE AGE <= 12
AND GEND_CD = 'W'
AND if(TLNO is null, 'NONE', TLNO)
ORDER BY AGE desc, pt_name
[TIL] WEEK 2 FRI - DATEDIFF (1) | 2024.07.05 |
---|---|
[TIL] WEEK 2 THUR (find_in_set) (0) | 2024.07.04 |
[SQL] 카테고리 별 최대값 정보 가져오기 2 (0) | 2024.07.03 |
[TIL] SQL 세션 풀이 (0) | 2024.07.03 |
[WIL] 1주차 (0) | 2024.06.28 |