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
운영게시판
최근게시물
MS-SQL Q&A 6672 게시물 읽기
No. 6672
ROW를 중첩하려면 어떻게 해야 하나요?ㅠㅠ
작성자
김광현(cascade84)
작성일
2013-05-22 08:55
조회수
8,774

예를 들어

                   
  A B C     A B C  
  a b     --> a b c  
  a   c            
                   

 A, B, C  컬럼에 a, b 의 값을 가진 ROW, a, c의 값을 가진 ROW를 오른쪽 표에 있는 것 처럼 조회할 수 있을까요?

아무리 생각해도 떠오르질 않습니다. 답변 부탁드립니다.ㅠㅠ

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

SELECT A, MAX(B), MAX(C)

FROM 테이블

GROUP BY A
;

우욱님이 2013-05-22 11:38에 작성한 댓글입니다. Edit

답변 감사합니다.

제가 질문을 잘못한거 같네요..ㅠㅠ

제가 셀렉트를 한 값이 대충

===========================================================

일자                  출근   퇴근  기본   연장  <- 컬럼명

March 1, 2013                     기본    
March 2, 2013 0807 2158         
March 3, 2013 0845 1612         
March 4, 2013 0755 2206 기본    
March 4, 2013 0755 2206           연장
March 4, 2013 0755 2206         
March 5, 2013 0753 1853 기본    
March 5, 2013 0753 1853           연장
March 6, 2013 0747 1906 기본    
March 6, 2013 0747 1906           연장

===========================================================

이미 CASE WHEN을 써서 기본과 연장을 나눴습니다.

쿼리 일부분은 이렇게 CASE WHEN으로 해놨습니다.

MAX를 입히려고 서브 쿼리를 둬서 하면 에러가 나서 (ODBC 입니다.)

===========================================================

select  a.ldti_date "일자", a.ldti_btime "출근", a.ldti_etime "퇴근",
 CASE WHEN b.lite_dscr = '기본' THEN max(b.lite_dscr) ELSE '' END "기본",
 CASE WHEN b.lite_dscr = '연장' THEN '연장' ELSE '' END "연장",
 CASE WHEN b.lite_cd > '200' THEN b.lite_dscr ELSE a.ldti_rmk END "비고"

===========================================================

원하는건 같은 날짜에 기본, 연장, .... 으로 날짜가 한줄로만 나오는겁니다.

 

김광현(cascade84)님이 2013-05-22 13:41에 작성한 댓글입니다.
이 댓글은 2013-05-22 13:41에 마지막으로 수정되었습니다.

 WITH tbl( 일자, 출근, 퇴근, 기본, 연장 )

AS
(
SELECT 'March 1, 2013' ,'', '', '기본', '' UNION ALL
SELECT 'March 2, 2013' ,'0807', '2158', '', '' UNION ALL
SELECT 'March 3, 2013' ,'0845', '1612', '', '' UNION ALL
SELECT 'March 4, 2013' ,'0755', '2206', '기본', '' UNION ALL
SELECT 'March 4, 2013' ,'0755', '2206', '', '연장' UNION ALL
SELECT 'March 4, 2013' ,'0755', '2206', '', '' UNION ALL
SELECT 'March 5, 2013' ,'0753', '1853', '기본', '' UNION ALL
SELECT 'March 5, 2013' ,'0753', '1853', '', '연장' UNION ALL
SELECT 'March 6, 2013' ,'0747', '1906', '기본', '' UNION ALL
SELECT 'March 6, 2013' ,'0747', '1906', '', '연장'
)
SELECT 일자, 출근, 퇴근, MAX(기본) + MAX(연장)
FROM tbl
GROUP BY 일자, 출근, 퇴근
;
우욱님이 2013-05-22 15:13에 작성한 댓글입니다. Edit

감사합니다~

덕분에 많은 도움되었습니다~

수고하세요~^^

김광현(cascade84)님이 2013-05-22 16:38에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6675dvd대여프로그램을 만들고있는데 질문있습니다. [2]
김순인
2013-06-02
8754
6674(초보적인 질문) VIEW ===> 기본키(PK) 설정이 가능한가요.. [1]
김승철
2013-05-29
8904
6673db2 의 로직컬 테이블 들을 ms-sql 에서 쓸 수 있는 방법은?? [4]
김승철
2013-05-28
9890
6672ROW를 중첩하려면 어떻게 해야 하나요?ㅠㅠ [4]
김광현
2013-05-22
8774
6671Windows Server 2012 평가판 다운로드 이벤트하네요~ [1]
탕우
2013-05-15
7839
6670다른테이블의 데이타 Sum해서 차액을 구하고 싶습니다. [3]
둥둥이
2013-05-14
8462
6668MS-SQL 2008 R2 데이터 이관 [1]
이규영
2013-05-13
9124
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다