특정 관측치만 선택하기... 0 3 3,328

by OYS [SQLServer] [2024.11.22 11:01:26]


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

 

쉬운듯한테 잘 안되네요...도움을 좀 부탁드리겠습니다. 감사합니다. 

by 우주민 [2024.11.22 12:17:35]
select t1.ID, t1.Product, t1.Price
from table_name t1
where t1.ID in (select ID from table_name where Product = '가')

 


by 마농 [2024.11.22 14:42:51]
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
;

 


by 우주민 [2024.11.22 17:02:18]

아... 이 방법이 테이블 데이터에 한번만 접근하게되는 방법이겠네요.

단순하게 결과만 도출하는 쿼리를 만들었는데, 조금 더 다각적으로 생각해봐야겠다고 느껴집니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입