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 3539 게시물 읽기
No. 3539
update시 order by 오류
작성자
푸롬이
작성일
2007-05-31 17:36
조회수
4,557

update idms300 set pg_cnt =(select   a.fr_pg-stuff(max(b.bub_cd+ b.sa_no+convert(varchar(10),b.fr_pg)),1,20,'') * 1  pg_cnt

                                          from idms300 a left join idms300 b on a.sa_no > b.sa_no

                                          where a.bub_cd = '000212'

                                           and a.label_no = '00055'

                                          group by a.sa_no,a.fr_pg, a.pg_cnt

                                         order by a.sa_no,a.fr_pg)

where a.bub_cd = '000212'

and a.label_no = '00055'


와 같이 업데이트 처리를 하려고 합니다. 

내부 select문은 에러없이 데이터가 여러건이 나옵니다. 

그런데 업데이트 처리를 하면 


'TOP을 함께 지정하지 않는 한 뷰, 인라인 함수, 파생 테이블, 하위 쿼리에서 ORDER BY 절을 사용할 수 없습니다.'

라는 오류가 뜹니다. 


=(select   a.fr_pg-stuff(max(b.bub_cd+ b.sa_no+convert(varchar(10),b.fr_pg)),1,20,'') * 1  pg_cnt

                                          from idms300 a left join idms300 b on a.sa_no > b.sa_no

                                          where a.bub_cd = '000212'

                                           and a.label_no = '00055'

                                          group by a.sa_no,a.fr_pg, a.pg_cnt

                                         order by a.sa_no,a.fr_pg)


에서 order by는 필수이거든요.. 

처리하는 방법이 없을까요?

이 글에 대한 댓글이 총 3건 있습니다.
~ =(select   top 100 percent a.fr_pg-stuff( ~
을 넣어도 
열 접두사 'a'이(가) 쿼리에 사용된 별칭 이름이나 테이블 이름과 일치하지 않습니다.
라는 오류가 뜨는데요.  답변주시면 감사드리겠습니다.
푸롬이님이 2007-05-31 17:55에 작성한 댓글입니다. Edit
안녕하세요...

update 
    set  aa =    (값)..

update 문은 하나의 레코드의 하나의 값을 저장합니다..
이작업을 필요한 만큼 반복하는 것이지요...
즉, (값) 은 하나 이어야 합니다..

"내부 select문은 에러없이 데이터가 여러건이 나옵니다. "
여러건이 나오면... 당연히 에러지요... 
Top 을 사용하라는 것도 결국은  Top 1 을 사용하라는 무언의 압력(?) 입니다..

"~ =(select   top 100 percent a.fr_pg-stuff( ~"   ==> 결국은 에러입니다....
물론,  이 에러 나기 전에 에러가 발생했구요..

"열 접두사 'a'이(가) 쿼리에 사용된 별칭 이름이나 테이블 이름과 일치하지 않습니다."

update idms300 set pg_cnt =(select   a.fr_pg-stuff(max(b.bub_cd+ b.sa_no+convert(varchar(10),b.fr_pg)),1,20,'') * 1  pg_cnt
                                          from idms300 a left join idms300 b on a.sa_no > b.sa_no 
                                          where a.bub_cd = '000212'
                                           and a.label_no = '00055'
                                          group by a.sa_no,a.fr_pg, a.pg_cnt
                                         order by a.sa_no,a.fr_pg)

where a.bub_cd = '000212'
and a.label_no = '00055'


여기서 a 는 지정된 table 이 없네요...  
서브쿼리 안에 지정된 a를 생각하시는 것은 아니겠지요 ..^^
서브쿼리 안에 있는 것은 그 안에서만 허용됩니다..

이덕희(bluefild)님이 2007-06-01 09:14에 작성한 댓글입니다.

update idms300 set pg_cnt =(select   a.fr_pg-stuff(max(b.bub_cd+ b.sa_no+convert(varchar(10),b.fr_pg)),1,20,'') * 1  pg_cnt

                                          from idms300 a left join idms300 b on a.sa_no > b.sa_no

                                          where a.bub_cd = '000212'

                                           and a.label_no = '00055'

                                          group by a.sa_no,a.fr_pg, a.pg_cnt

                                         order by a.sa_no,a.fr_pg)

where a.bub_cd = '000212'

and a.label_no = '00055'

위에 밑줄친거 지우세요.

이승철(yamyo)님이 2007-06-06 13:58에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
3542access(mdb)에서 null처리 문제(.net 2.0)? [1]
지화복
2007-06-01
3486
3541Datetime과 SmallDatetime의 차이 ? [2]
김영수
2007-06-01
7299
3540어느것이 성능에 더 좋을까요 ? [2]
김영수
2007-05-31
3053
3539update시 order by 오류 [3]
푸롬이
2007-05-31
4557
3538left join일때 sum처리
풍뎅이
2007-05-31
2978
3537MSSQL 리눅스에서 C++로 연결하기 도와주세요...
오찌
2007-05-31
3421
3536DBGuide.net에 SQL 서버 전문가 무료 컨설팅 코너가 생겼습니다.
DBGUIDE.NET
2007-05-31
3086
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다