ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MSSQL 데이터 병합
    Data Base/MSSQL 2008. 11. 21. 15:02

    Select 시 컬럼명을 다음과 같이 조회 했을 경우
    ,dbo.ufn_sysf_com_nm('과목',d.subject_cd) as subject_nm             --과목명
    ,(case when f.subject_absent_yn = 'y' then (case when d.exemption_subject_yn = 'y' then '면제' else '결시' end) else marking_points end)
    결과는 ----
    항공법규 20
    공중항법 70
    항공기상 70
    비행이론 70
    교통통신 80
    -----------
    라고 나온다.
    데이터 조합을 하기 위해 다음과 같이 썼다.
    ,dbo.ufn_sysf_com_nm('과목',d.subject_cd) as subject_nm +(case when f.subject_absent_yn = 'y' then (case when d.exemption_subject_yn = 'y' then '면제' else '결시' end) else marking_points end)
    라고 조회 했을 경우...
    '+' 근처의 구문이 잘못되었습니다. 라는 에러.
    alias 가 중간에 있어서 ....수정했다.

    ,dbo.ufn_sysf_com_nm('과목',d.subject_cd) + (case when f.subject_absent_yn = 'y' then (case when d.exemption_subject_yn = 'y' then '면제' else '결시' end) else marking_points end)
    라고 수정후 조회했을 경우....
    varchar 값 '항공법규'을(를) 데이터 형식 int(으)로 변환하지 못했습니다.
    중간에 있는 + 항목을 해줄려는데 varchar + int 형식이기 때문에
    문자열로 더하는 것도 아니고 숫자열로 더하지도 않는게 되었다.

    ,dbo.ufn_sysf_com_nm('과목',d.subject_cd) +convert(varchar,(case when f.subject_absent_yn = 'y' then (case when d.exemption_subject_yn = 'y' then '면제' else '결시' end) else marking_points end))
    라고 쓰니 문제 해결

    항공법규20
    공중항법70
    항공기상70
    비행이론70
    교통통신80

    ,dbo.ufn_sysf_com_nm('과목',d.subject_cd) +'('+convert(varchar,(case when f.subject_absent_yn = 'y' then (case when d.exemption_subject_yn = 'y' then '면제' else '결시' end) else marking_points end))+'점)' as subject_point
    항공법규(20점)
    공중항법(70점)
    항공기상(70점)
    비행이론(70점)
    교통통신(80점)
    로 완성했음~^^
Designed by Tistory.