ID Product Price
1 가 100
1 나 200
1 다 300
2 가 100
3 나 200
4 가 100
4 다 300
데이터가 위와 같다고 할 때, 아래와 같이 Product '가'를 포함하고 있는 ID의 내역만 추출하고 싶습니다.
(ID 3의 경우는 Product '가'를 포함하고 있지 않기에 제외하고 나머지 ID는 추출 )
ID Product Price
1 가 100
1 나 200
1 다 300
2 가 100
4 가 100
4 다 300
쉬운듯한테 잘 안되네요...도움을 좀 부탁드리겠습니다. 감사합니다.
select t1.ID, t1.Product, t1.Price from table_name t1 where t1.ID in (select ID from table_name where Product = '가')
WITH t AS
(
SELECT 1 ID, '가' Product, 100 Price
UNION ALL SELECT 1, '나', 200
UNION ALL SELECT 1, '다', 300
UNION ALL SELECT 2, '가', 100
UNION ALL SELECT 3, '나', 200
UNION ALL SELECT 4, '가', 100
UNION ALL SELECT 4, '다', 300
)
SELECT *
FROM (SELECT ID, Product, Price
, COUNT(CASE Product WHEN '가' THEN 1 END) OVER(PARTITION BY ID) cnt
FROM t
) a
WHERE cnt > 0
ORDER BY ID, Product
;
아... 이 방법이 테이블 데이터에 한번만 접근하게되는 방법이겠네요.
단순하게 결과만 도출하는 쿼리를 만들었는데, 조금 더 다각적으로 생각해봐야겠다고 느껴집니다.