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
운영게시판
최근게시물
MySQL Q&A 30597 게시물 읽기
No. 30597
[Mysql] 쿼리 질문 - 컬럼을 비교하여 값이 다른 경우 상태값을 변경
작성자
안중경(systemfile)
작성일
2013-05-24 12:19
조회수
11,350

안녕하세요

쿼리 질문이 있어 글을 남깁니다.

하고자 하는 바는 다음과 같습니다.

두개의 컬럼(val_1과 val_2) 을 비교하여 그 값이 다른 경우 해당 로우의 상태값(bool)을 컬럼의 값이 다른 로우가  나올 때까지 유지하는 겁니다.

표로 그리면 아래와 같습니다. 왼쪽 표에서 오른쪽 표로 짠! 하고 바꾸고 싶은거죠.

 
Time val_1 val_2 Bool   Time val_1 val_2 Bool
1 A B 1   1 A B 1
2 B B 0   2 B B 1
3 B B 0   3 B B 1
4 A B 0   4 A B 0
5 B B 0   5 B B 0
6 A B 0   6 A B 0
7 A B 1 >>> 7 A B 1
8 B B 0   8 B B 1
9 B B 0   9 B B 1
10 B B 0   10 B B 1
11 A B 1   11 A B 1
12 B B 0   12 B B 1
13 B B 0   13 B B 1
14 A B 0   14 A B 0
15 B B 0   15 B B 0

 

 

 

실제로 시간 값은 마이크로 타임으로 들어가 있고 컬럼도 더 많아 고려해야할 사항이 많네요.ㅜ,.ㅡ

머리가 굳었는지 딱히 좋은 방법이 생각나지 않는데

쿼리로 풀 수 있는 좋은 방법이 없을까요?

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

SELECT Time, val_1, val_2, Bool
     , @v := CASE WHEN val_1 != val_2 THEN Bool ELSE @v END Bool_New
  FROM t
 ORDER BY Time
;

마농(manon94)님이 2013-05-24 14:43에 작성한 댓글입니다.

내부 변수를 사용하면 쉽게 해결 가능한 문제였군요.ㅜ,.ㅡ

val_1과 val_2 가 바뀌는 시점을 구간으로 나누어 bool컬럼을 업데이트 치면 되겠구나 했던 제 생각이 짧았네요.ㅡ,.ㅡ;;;

 

감사합니다.

안중경(systemfile)님이 2013-05-27 11:31에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
3060012기가의 테이블 전체검색.. [1]
박찬성
2013-06-03
10365
30599N 키워드(?) 질문 [2]
mysql
2013-05-30
8777
30598mysql 이미설치된 5.5 이상에서 cmake 옵션은 확인할수없나요?
배원준
2013-05-30
8984
30597[Mysql] 쿼리 질문 - 컬럼을 비교하여 값이 다른 경우 상태값을 변경 [2]
안중경
2013-05-24
11350
30596[MySQL]사칙연산 질문입니다. [2]
김남현
2013-05-20
9903
30595Win Server 2008에서 외부 MySql 서버 접근 [1]
이광진
2013-05-20
8731
30594centos mysql 세그멘테이션 오류가 나는데요 ㅠㅠ 헬프미 [1]
구리드
2013-05-20
9856
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다