안녕하세요 여러분, 내 이름은 Penelope이고 약 4 년의 SQL 경험이 있습니다. 우선이 글을 읽으면서 시간을내어 지시, 예, 도보 또는 안내를 제공 해준 것에 대해 감사 드리고 싶습니다. 저는 SQL 문제/퍼즐을 가지고 있습니다. 나는 여러 가지 레코드를 레코드에 연결하는 데 실패했습니다. 조인스에 대한 경험이 약간 있지만 내 머리가 조금 넘는 것 같아 약간의 도움이나 안내를 받기를 바랍니다. 나는 하나의 긴 학생 기록을 원하지만, 당신이 볼 수 있듯이 올바른 데이터를 얻고 있지만, 어떤 테이블은 하나 이상의 레코드를 가지고 있기 때문에 여러 레코드가 생성되고 있습니다. 아래에서 EntireStudentI라는 테이블에 하나의 레코드로 삽입해야하는 테이블과 컬럼의 이름을 볼 수 있습니다. 내 SQL, 내 현재의 결과는 나는 하나 개의 레코드 나에게 학생에 대한 기본 정보를 TP라는 테이블을 제공 한 어떤SQL의 새 테이블에서 4 개 테이블의 여러 행을 하나의 단일 행으로 결합하는 방법은 무엇입니까?
trans_type
trk_link
service_db
scn
given_nm
surname_nm
cc
sex
grade
dob
marital_st
pob_city
pob_cntry
UScitizenship_CD
나는 내게 여권 번호
를 원하는 하나 개의 레코드를 줄 것이다 P라는 테이블이 내 SQL에서 내가 설정 때문에 여권 그러나 비자 번호가이 경우에 같은 이름 -pass_nbr
나는 테이블은 학생이 복수 비자
pass_nbr을 가질 수로 나에게 여러 레코드를 줄 수있는 VI를 불렀다 VisaNo로 덜 혼란 스럽다. 이것은 레코드가 아닐 수 있습니다. 하나, 둘 ...
마지막으로 저는 학생의 부양 가족 구성원 인 PD라는 테이블을 가지고 있습니다. 이것은 하나, 둘 ...
given_nm 및 surname_nm
dep_rel
birth-dt
는 내가 뭘 원하는 TP에 대한 위에 나열된 열이있는 하나 개의 기록을 가지고있다 (이러한 DepName을 만들기 위해 연결된 것) 레코드 수 없다 .
그런 다음 pass_nbr을 P 테이블의 열로 추가하십시오.
그런 다음 VI 테이블의 VisaNo를 쉼표로 구분 된 열로 추가하십시오. - VisaNo는 비어 있거나 비자 또는 다중 비자가 될 수 있습니다. 예는 빈 열 값, 즉 하나의 수입니다. 89888 또는 여러 값 89888,78908,78999.
마지막으로 PD 테이블에서 종속 정보 열을 추가하고 싶습니다. 학생은 부양 가족을 가질 필요가 없으며, 배우자와 자녀와 같이 여러 부양 가족이있을 수 있습니다. 배우자와 자녀는 두 개의 기록을 PD 테이블에 두 개의 개별 기록으로 만듭니다. 내 단일 레코드에서 나는 열이
이러한 모든 테이블이 내 SQL
인 키하는 열라고 trk_link에 의해 서로 연결되어 Depname, 열 구분 dep_rel하고, 쉼표로 구분 birth_dt을 구분하도록 노력하겠습니다 것
SELECT t.trans_type
,t.trk_link
,t.service_db
,t.scn
,t.given_nm
,t.surname_nm
,t.cc
,t.sex
,t.grade
,t.dob
,t.marital_st
,t.pob_city
,t.pob_cntry
,CASE t.UScitizenship_CD
WHEN 'H' THEN 'Holds'
WHEN 'DNH' THEN 'Does Not Hold'
else ''
End as Student_Citizenship_Status
--,t.UScitizenship_CD
,t.trk_link20
,p.pass_nbr
,v.pass_nbr as VisaNo,
CONCAT(p2.given_nm, ' ', p2.surname_nm) As DepName
--,p2.given_nm
--,p2.surname_nm
,p2.dep_rel
,p2.birth_dt
,CASE p2.UScitizenship_CD
WHEN 'H' THEN 'Holds'
else 'Does Not Hold'
End as Dependent_Citizenship_Status
from TP t
inner join P p
on t.[trk_link] = p.[trk_link]
inner Join VI v
on p.[trk_link] = v.[trk_link]
inner join PD p2
on t.[trk_link] = p2.[trk_link]
where t.trk_link = '22985200458053000003171117104111'
그리고이 결과를
정말 고마워 얘들 아 0,123,516입니다Penelope!
감사합니다. 약간의 조정을 한 두 번째 예제는 내가 필요한 것을 정확히 제공해주었습니다. Penelope –
@ PenelopeEstes 그게 다행이라고 생각합니다. 이 질문을 참조하는 다른 사람들에게 유용 할 수 있도록 정답으로 표시하는 것이 좋습니다. –