안녕하세요 쿼리 질문드립니다..
아래와 같이 제품 종류가 다양한데 같은 제품군끼리의 합계를 구하고 싶습니다...
방법을 좀 알려주시면 감사드리겠습니다...
ITEMID | QTY |
C-CH00001-1 | 1 |
C-CH00003 | 6 |
C-CH00003-1 | 2 |
G-HT00055 | 100 |
G-HT00169 | 200 |
G-HT00214 | 2,000 |
G-HT00227 | 200 |
P-EN00033 | - |
P-EN00080 | 1,040 |
P-ET00022 | 400 |
P-TM00006 | - |
P-TM00008 | - |
P-TS00016 | - |
P-TS00104 | 200 |
P-TS00206 | - |
P-TS00229 | 200 |
P-TS00456 | 200 |
P-TS00551 | - |
P-TS00553 | - |
P-TS00563 | 100 |
P-TS00593 | 200 |
P-TS00604 | 600 |
P-TS00657 | - |
P-TS00691 | 200 |
P-TS00692 | 200 |
TS | 1,900 |
TM | - |
기타 | 3,949 |
Comment 10
-
초짜해커
2014.07.15 12:06
SELECT 제품군 = CASE SUBSTRING(ITEMID, 3, 2) WHEN 'TS' THEN 'TS' WHEN 'TM' THEN 'TM' ELSE '기타' END,QTY = SUM(QTY)FROM 제품GROUP BY CASE SUBSTRING(ITEMID, 3, 2) WHEN 'TS' THEN 'TS' WHEN 'TM' THEN 'TM' ELSE '기타' END분류기준을 알려주시면 더 깔끔해질 수 있습니다. -
devil5538
2014.07.15 12:15
특정 문자열을 바꾸는게 아니라 ITEMID에 TS문자가 들어가 있는 목록의 SUM을 구하고 싶어서 질문 드린건데요...ㅠㅠ
-
초짜해커
2014.07.15 12:39
만약 TS만 필요하다면
SELECT SUM(QTY) FROM 제품 WHERE ITEMID LIKE '%TS%'
-
SQL왕왕초보
2014.07.15 14:10
SELECT ITEMID, SUM(QTY)수량
FROM 테이블명
WHERE ITEMID LIKE '%TS%'
GROUP BY ITEMID요로케?? 실행해보진 않았음요..ㅡ.,ㅡ;; 워낙 해커님께서 잘 설명해주셔서
쬐금?? 간단하게??
-
devil5538
2014.07.15 16:14
제가 어렵게 질문을 올렸나요?? 위에 보시면 ITEMID에 C-*** , G-*** , P-EN , P-TS , P-TM 이런식으로 품목이 시작되는데 얘들을 그룹별로
SUM을 내려고 하는건데요... 그래서 아래 보시면 노랑색으로 구분해서 P-TS가 들어가 있는거는 TS , P-TM이 들어가 있는것은 TM으로 구분해서 합계를 내고자 합니다...그리고 나머지는 기타로 다 묶어서 SUM을 하고 싶구요....
-
초짜해커
2014.07.15 16:26
SELECT 제품군 = CASE WHEN ITEMID LIKE 'P-TS%' THEN 'TS' WHEN ITEMID LIKE 'P-TM%' THEN 'TM' ELSE '기타' END,QTY = SUM(QTY)FROM 제품GROUP BY CASE WHEN ITEMID LIKE 'P-TS%' THEN 'TS' WHEN ITEMID LIKE 'P-TM%' THEN 'TM' ELSE '기타' END -
devil5538
2014.07.15 16:53
SUM(CASE WHEN A.ITEMID LIKE 'P-TS%' THEN 'TS'
WHEN A.ITEMID LIKE 'P-TM%' THEN 'TM'
ELSE '기타' END )이렇게 할 경우 형식변환을 해야 할 것 같은데 죄송하지만 그것까지 좀 알려주세요....
아래와 같이 오류가 나서요....
*오류메세지 : sum 연산자에 대한 피연산자 데이터 형식 varchar이(가) 잘못되었습니다.
-
초짜해커
2014.07.15 17:24
QTY가 VARCHAR형식인가요?
이럴경우 QTY를 INT로 CONVERT해야 하는데요.
QTY에 숫자 이외의 값이 들어있다면 좀 골치아프겠네요.
만약 숫자 이외의 값이 몇개 안되면 REPLACE한다음 CONVERT하세요.
-
devil5538
2014.07.15 17:51
위 댓글에 대해 제가 할 줄을 몰라서 문의 드렸습니다...작성하는 법을 몰라요...완전 초짜라서리...ㅠㅠ
-
초짜해커
2014.07.15 18:18
QTY가 숫자일때만 SUM 되도록 했습니다.SELECT 제품군 = CASE WHEN ITEMID LIKE 'P-TS%' THEN 'TS' WHEN ITEMID LIKE 'P-TM%' THEN 'TM' ELSE '기타' END,QTY = SUM(CASE WHEN ISNUMERIC(QTY) = 1 THEN QTY ELSE 0 END)FROM 제품GROUP BY CASE WHEN ITEMID LIKE 'P-TS%' THEN 'TS' WHEN ITEMID LIKE 'P-TM%' THEN 'TM' ELSE '기타' END