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 4550 게시물 읽기
No. 4550
간단한 쿼리 질문드립니다
작성자
권정혁(nebula)
작성일
2008-12-05 00:27
조회수
5,166

MS-SQL 2005 쿼리질문드립니다

[과목코드테이블]
과목(SUBJECT)       문항수(SU)
-------------------------------
국어(AA)                 2
영어(BB)                 3
수학(CC)                 4


[수험자테이블]
수험자(NAME)    수험과목(SUBJECT)
--------------------------------
이명박                 AA
김영삼                 BB
김대중                 CC
김대중                 AA


[쿼리결과]
수험자(NAME)   수험과목(SUBJECT)   문제번호(NO)
----------------------------------------------
이명박             국어                1
                                            2
김영삼             영어                1
                                            2
                                            3
김대중             수학                1
                                           2
                                           3
                                          4
                   국어                1
                                         2

- 과목코드테이블과 수험자테이블의 수험과목을 조인하여
  수험자가 수험한 과목의 문항수 만큼 SELECT 되게 할려구요
 
  고수님들 부탁드립니다
  즐건 하루 되세요

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

2005년을 사용하시니까.

CROSS APPLY를 이용하셔서 과목별 문항수별 구하시면됨..

drop TABLE 과목코드
go

CREATE TABLE 과목코드(SUBJECT varchar(4) , 과목 VARCHAR(8),SU   INT)

INSERT 과목코드
SELECT 'AA', '국어',2 UNION ALL
SELECT 'BB','영어',3 UNION ALL
SELECT 'CC','수학(CC)',4

DROP TABLE 수험자테이블
GO
CREATE TABLE 수험자테이블(NAME VARCHAR(6),SUBJECT CHAR(2))
INSERT 수험자테이블
SELECT '이명박','AA' union all
SELECT '김영삼','BB' union all
SELECT '김대중','CC' union all
SELECT '김대중','AA'

 
 WITH CopyT AS
 (
 SELECT 1 NO
 UNION ALL
 SELECT NO+1 NO
 FROM CopyT
 )
 SELECT TOP 100
  NO INTO CopyT
FROM CopyT

SELECT  (CASE WHEN RES.N_SEQ = 1 THEN RES.NAME  ELSE '' END ) AS NAME
      , (CASE WHEN RES.N_S_SEQ = 1 THEN RES.SUBJECT  ELSE '' END )  AS SUBJECT
      , RES.NO
  FROM (
         SELECT   RA.NAME
      , RB.SUBJECT
      , RB.NO
      , ROW_NUMBER()  OVER  (partition BY  RA.NAME  ORDER BY RA.NAME , RA.SUBJECT  ,RB.NO ) N_SEQ
      , ROW_NUMBER()  OVER  (partition BY  RA.NAME ,RA.SUBJECT ORDER BY RA.NAME , RA.SUBJECT  ,RB.NO ) N_S_SEQ
    FROM 수험자테이블 AS RA INNER JOIN
    ( select a.SUBJECT , b.NO
      from  과목코드 a
     cross apply
    (select no from CopyT where no <= a.SU ) b  ) RB
   ON  RA.SUBJECT = RB.SUBJECT
  ) AS RES 
     ORDER BY RES.NAME, RES.SUBJECT  ,RES.NO

ZZ님이 2008-12-05 18:07에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4553여러 파라독스 db 파일들을 합치고 싶어요...도와주세요 [2]
김우성
2008-12-07
4834
4552mssql2000과 c언어를 연동하려고해요 [1]
짱구
2008-12-07
5166
4551연결된 서버에 쿼리 날릴때의 문제가 있어서 질문드립니다. 제발 도움좀.. [1]
autuln
2008-12-07
5617
4550간단한 쿼리 질문드립니다 [1]
권정혁
2008-12-05
5166
4549다중 추가 문제입니다. [1]
김은희
2008-12-04
4745
4548선배님들 쿼리문 좀 도와주셔요...^^ [2]
임윤정
2008-12-03
5296
4547select 칼럼명 from table? [1]
배충열
2008-12-02
4999
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다