database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9957 게시물 읽기
No. 9957
쿼리 질문 드립니다.
작성자
이기자(k3i2)
작성일
2018-03-20 07:24:34
조회수
724

Select uid,sday1,sday2,sday3,sday4,sday5,sday6,sday7,sday8,sday9,sday10...

From setdat

 

 

sday1~sday31까지에는 '','2','3','4','7','8' 중 하나의 값이 저장돼있습니다.

이걸 uid별로 '2'의갯수를 가지는 컬럼, '3'의갯수를 가지는 컬럼, '4'의갯수를 가지는 컬럼...이 추가되도록 조회하고 싶습니다.

 

Select uid,sday1,sday2,sday3,sday4,sday5,sday6,sday7,sday8,sday9,sday10... ??? As sum2, ??? As sum3... 이런식으로요..

어떻게 방법이 있을까요?

없으면 sday만 조회후에 loop돌려서 프로그램처리하는 수밖에 없는데, 그렇게됨 아무래도 깔끔하지가 않아서요.. T.T

 

답변 부탁 드립니다 ^^

 

이 글에 대한 댓글이 총 2건 있습니다.

WITH setdat AS
(
SELECT 1   uid
     , ''  sday1 , '2' sday2 , '2' sday3 , '3' sday4 , '3' sday5
     , '3' sday6 , '4' sday7 , '4' sday8 , '4' sday9 , '4' sday10
     , '7' sday11, '7' sday12, '7' sday13, '7' sday14, '7' sday15
     , '7' sday16, '7' sday17, '8' sday18, '8' sday19, '8' sday20
     , '8' sday21, '8' sday22, '8' sday23, '8' sday24, '8' sday25
     , ''  sday26, ''  sday27, ''  sday28, ''  sday29, ''  sday30
     , null sday31
)
SELECT uid
     , sday1 , sday2 , sday3 , sday4 , sday5
     , sday6 , sday7 , sday8 , sday9 , sday10
     , sday11, sday12, sday13, sday14, sday15
     , sday16, sday17, sday18, sday19, sday20
     , sday21, sday22, sday23, sday24, sday25
     , sday26, sday27, sday28, sday29, sday30
     , sday31
     , LENGTH(x) - LENGTH(REPLACE(x, '2', '')) cnt_2
     , LENGTH(x) - LENGTH(REPLACE(x, '3', '')) cnt_3
     , LENGTH(x) - LENGTH(REPLACE(x, '4', '')) cnt_4
     , LENGTH(x) - LENGTH(REPLACE(x, '7', '')) cnt_7
     , LENGTH(x) - LENGTH(REPLACE(x, '8', '')) cnt_8
     , 31 - LENGTH(x) cnt_null
  FROM (SELECT uid
             , sday1 , sday2 , sday3 , sday4 , sday5
             , sday6 , sday7 , sday8 , sday9 , sday10
             , sday11, sday12, sday13, sday14, sday15
             , sday16, sday17, sday18, sday19, sday20
             , sday21, sday22, sday23, sday24, sday25
             , sday26, sday27, sday28, sday29, sday30
             , sday31
             , CONCAT(''
             , sday1 , sday2 , sday3 , sday4 , sday5
             , sday6 , sday7 , sday8 , sday9 , sday10
             , sday11, sday12, sday13, sday14, sday15
             , sday16, sday17, sday18, sday19, sday20
             , sday21, sday22, sday23, sday24, sday25
             , sday26, sday27, sday28, sday29, sday30
             , sday31
             ) x
          FROM setdat
        ) a
;

마농(manon94)님이 2018-03-20 14:11:14에 작성한 댓글입니다.

와~ 감사합니다 ^^

이기자(k3i2)님이 2018-03-22 13:17:00에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9960distinct 관련 쿼리 [1]
박병호
2018-03-25
763
9959트리거에 Mysql에 값을 넣는게 가능할까요? [3]
이기자
2018-03-22
747
9958정렬 문제 [2]
박병호
2018-03-20
705
9957쿼리 질문 드립니다. [2]
이기자
2018-03-20
724
9956postgreSQL 과 MSSQL Linked Server 연결 후 데이터 조회 시 문제 [1]
김민재
2018-03-14
820
9955파일 용량 표시방법 [2]
김태원
2018-03-14
767
9954데이터베이스 트리거를 이용해서 서버에 파일을 전송하려고 합니다. [2]
김창권
2018-03-12
753
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2018 DSN, All rights reserved.
작업시간: 0.069초, 이곳 서비스는
	PostgreSQL v10.4로 자료를 관리합니다