안녕하세요,
이번에 좀 난해한.. ( 나만그런가 ) 쿼리가 있어서요,
한개의 테이블에 각각의 필드가 있고, 데이터도 제각각 들어가있는 상태입니다.
여기서 각각의 필드를 전부 조회 해서 특정 값이 몇개 들어있는지 확인하는 쿼리가 필요해서 문의 드립니다.
즉,
a b c d e f
1 2 3 4 5 6
6 5 4 3 2 1
2 3 4 5 6 1
이런식으로 값이 들어가 있는데.
a,b,c,e,d,f 필드 구분없이 전체 중에 1이 몇개 들어가있는지를 구하는 쿼리가 되어야 합니다.
전 아무리 생각해도 db 쿼리상으로는 생각이 안나네요, ㅠ,ㅠ
선배님들의 도움을 부탁 드립니다.
Comment 4
-
건우아빠
2013.10.17 15:52
-
초짜해커
2013.10.17 16:05
LEN(a+b+c+d+e+f) - LEN(REPLACE(a+b+c+d+e+f, '1', ''))
-
건우아빠
2013.10.17 16:26
한자리 숫자이면 초짜해커님 방법이 손쉬울듯 합니다...
-
군고구마
2013.10.17 16:30
부족한 실력으로 쿼리 만들어봤습니다.
CREATE TABLE COUNT_TEST
(
ID CHAR(1)
, A INT
, B INT
, C INT
, D INT
, E INT
, F INT
)
INSERT INTO COUNT_TEST VALUES('A',2,2,1,1,5,6)
INSERT INTO COUNT_TEST VALUES('B',1,2,3,4,5,6)
INSERT INTO COUNT_TEST VALUES('C',2,2,3,4,5,6)
INSERT INTO COUNT_TEST VALUES('D',2,2,5,1,5,6)
INSERT INTO COUNT_TEST VALUES('E',2,2,1,5,6,3)
SELECT ID,COUNT(ORDERS)
FROM
(
SELECT ID,A,B,C,D,E,F
FROM COUNT_TEST WITH(NOLOCK)
)P
UNPIVOT
(ORDERS FOR COUNTS IN
(A,B,C,D,E,F)
)AS UNP
WHERE ORDERS = 1
GROUP BY ID
GO
unpivot 으로 컬럼을 행으로 변환 시킨다음 count 하시면 간단 할듯 합니다.