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 6871 게시물 읽기
No. 6871
Query 좀 가르쳐 주세요~
작성자
한강현(hackor)
작성일
2015-01-11 22:30:54
조회수
2,699

PHP 사용자 입니다. 서버는 MSSQL 이고요..

 테이블 db_table
  category    select    kugun    comment
      A            A-1        1        내용
      B            B-1        1        내용
      A            A-1         2        내용
      C            C-1        1        내용
      B            B-1         2        내용
      C            C-1        2        내용
이렇게 되어 있습니다.....

제가 while문으로 돌리면 이렇게 되요~~

======  A  =======
  A-1            1 .내용
======  A  =======
  A-1            2. 내용
 ======  B  =======
  B-1            1.내용
 ======  B  =======
  B-1            2.내용
 ======  C  ======
  C-1            1.내용
 ======  C  =======
  C-1            2.내용
 

제가 원하는 출력은 아래처럼 category별로 출력하고 select 필드는 중복제거 후 하나만, 내용은 전부 보이게 하고 싶습니다.
 ======  A  =======
  A-1            1 .내용
                    2. 내용
 ======  B  =======
  B-1            1.내용
                    2.내용
 ======  C  ======
  C-1            1.내용
                    2.내용
 

--> 이렇게 표시하게 하려면 어떻게 쿼리를 해야하나요??

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

-- 어차피 화면에서 while 돌리시는 거라면?
-- 화면에서 if 문으로 처리해도 될텐데요?
SELECT CASE ROW_NUMBER() OVER(PARTITION BY category ORDER BY kugun)
       WHEN 1 THEN category END category
     , "select", kugun, comment
  FROM db_table
;

마농(manon94)님이 2015-01-12 15:13:52에 작성한 댓글입니다.

mssql server가 2000 이라서 row_number 함수를 인식 못하네요~~

다른 방법이 없나요???

한강현(hackor)님이 2015-01-12 23:50:23에 작성한 댓글입니다.

1. 우선 앞서 언급한대로 화면단 처리가 가능할것이라 생각되구요.
  - 루프 안에서 이전값과 비교하여 같으면 공백 처리
2. kugun 의 값이 항상 1이 존재한다면 row_number 안해도 되겠네요
SELECT CASE kugun WHEN 1 THEN category END category
     , "select", kugun, comment
  FROM db_table a
 ORDER BY a.category, a.kugun
;

마농(manon94)님이 2015-01-13 09:11:14에 작성한 댓글입니다.

where절에 convert를 쓰니깐 convert errror가 발생되네요~~~

제가 while 문 3번을 돌리니깐 표시간 되는데 쿼리가 3~5초나 걸려요 결과물은 30개도 안되는데요..

while문 3번 돌려서 발생되는것 같습니다.

어떻게 하면 한번 쿼리로 표현할수 있을 까요??? (답변 부탁드리요~~)

select * from category where category='$category' order by category asc

while문 {

====== A ======= 

select distinct(select) from table where절

while문(){

             select * from table where절

                while문()

A-1            1 .내용 
                  2  내용
====== B =======
B-1            1 내용 
                   2 내용
====== C ======
C-1            1 내용
                   2 내용

}

}

}

한강현(hackor)님이 2015-01-18 08:11:40에 작성한 댓글입니다.
이 댓글은 2015-01-18 08:12:12에 마지막으로 수정되었습니다.

음...

컨버트 해서 에러난다는 거는 뭔얘긴지 모르겟구요.

제가 루프 돌리라고 한것은 메인 루프 안에서 서브쿼리 루프를 계속해서 돌리라는 말이 아니었습니다.

정렬된 최종 결과물을 루프돌면서

이전값과 현재값을 비교하여 출력여부만 결정하라는 말이었습니다.

마농(manon94)님이 2015-01-19 14:12:49에 작성한 댓글입니다.
이 댓글은 2015-01-19 14:13:51에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
6874WHERE 절에서 멀티 값을 주고 싶습니다. [1]
이성원
2015-01-20
2155
6873MSSQL 2014 하위버전 차이점 아시는분? [1]
노지석
2015-01-19
2837
6872데이터그리드뷰에 데이터를 불러와 뿌려줘야하는데 join이 너무 많이 쓰입니다. [5]
kshap
2015-01-12
2655
6871Query 좀 가르쳐 주세요~ [5]
한강현
2015-01-11
2699
6870안녕하세요. 쿼리 질문좀 드릴려고합니다. [10]
초보자
2015-01-06
2761
6868[질문] OSQL을 배치파일로 만들어서 사용하는방법 문의
정규성
2014-12-16
2161
6867mssql에서 asp.net 관련된 질문인데요 ㅠㅠ
김현서
2014-12-03
2233
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.072초, 이곳 서비스는
	PostgreSQL v11.1로 자료를 관리합니다