2017-03-12 1 views
0

남성 프로그래머가 연구하는 언어가 무엇인지 쿼리를 찾고 있습니다. 단지 남성없는 프로그래머을 얻기 위해 간단한 쿼리를 사용 follwing을 표두 열의 고유 한 값을 구하여 하나의 열로 만드는 방법

ID PNAME GENDER PROF1  PROF2 
1 ANAND  M PASCAL BASIC 
2 ALTAF  M CLIPPER COBOL 
3 JULIANA F COBOL  DBASE 
4 KAMALA  F C   DBASE 
5 MARY  F CPP  ORACLE 
6 NELSON  M COBOL  DBASE 
7 PATTRICK M PASCAL CLIPPER 
8 QADIR  M ASSEMBL C 
9 RAMESH  M PASCAL DBASE 
10 REBECCA F BASIC  COBOL 
11 REMITHA F C   ASSEMB 
12 REVATHI F PASCAL BASIC 
13 VIJAYA  F FOXFRP C 

에서, 나는
SELECT [ID], [PNAME],[GENDER],[PROF1],[PROF2] FROM [PRAC].[dbo].[PROGRAMMER] where gender = 'M'

ID PNAME GENDER PROF1 PROF2 
1 ANAND M   PASCAL BASIC 
2 ALTAF M   CLIPPER COBOL 
6 NELSON M   COBOL DBASE 
7 PATTRICK M   PASCAL CLIPPER 
8 QADIR M   ASSEMBL C 
9 RAMESH M   PASCAL DBASE 

도 우리가 노동 조합 명령 예

와 두 colunms에서 고유 한 값을 얻을 수 있습니다 사용할 수 있습니다
SELECT DISTINCT PROF1 FROM PROGRAMMER WHERE gender = 'M' 
union 
SELECT DISTINCT PROF2 FROM PROGRAMMER WHERE gender = 'M' 

PROF 
--------- 
ASSEMBL 
BASIC 
C 
CLIPPER 
COBOL 
DBASE 
PASCAL 

하지만 나는 할 수없는 것을 원합니다.

ID PNAME  GENDER proficiency 
1 ANAND  M   PASCAL 
1 ANAND  M   BASIC 
2 ALTAF  M   CLIPPER 
2 ALTAF  M   COBOL 
6 NELSON  M   COBOL 
6 NELSON  M   DBASE 
7 PATTRICK M   PASCAL 
7 PATTRICK M   CLIPPER 
8 QADIR  M   ASSEMBL 
8 QADIR  M   C 
9 RAMESH  M   PASCAL 
9 RAMESH  M   DBASE 

도와주세요 감사 추가

+2

검색어에 ID, PNAME 및 GENDER을 추가하기 만하면됩니까? –

+1

@JamesZ 명시된 바와 같이, 해당 열을 통합 문에 추가하십시오. – scsimon

+0

실제 문제는 테이블이 3NF가 아니라는 것입니다. 학생 과정 관계를 저장하는 하위 테이블이 있어야합니다. – Bohemian

답변

1

미리은 통합 쿼리에 열을 필요로한다.

SELECT  [PROF1], 
       [ID], 
       [PNAME], 
       [GENDER] 
FROM PROGRAMMER 
WHERE gender = 'M' 
UNION 
SELECT   [PROF2], 
       [ID], 
       [PNAME], 
       [GENDER] 
FROM PROGRAMMER 
WHERE gender = 'M' 
+3

대신에 'UNION ALL'을 사용할 수도 있습니다. 'UNION' - 결과를 중복 제거할지 여부에 따라 다릅니다. 이 답변에서와 같이 UNION 자체는 중복 된 항목이 있으면 제거합니다. – Tim

관련 문제