테이블
===============================
PK_ID | name | age | job | sw(나이 표시여부) 0: 표시 / 1: 표시인힘
---------------------------------------------------------
1 인싱찰 35 프로그래머 0
2 김민아 38 디자이너 1
3 오설아 25 문방구 0
4 박성오 39 사업가 1
5 허심정 29 미용사 0
6 남상철 58 영업직 1
7 안철수 47 보험직 1
8 나미수 18 학생 0
위의 데이타를 나이순(낮은순)으로 소트를 하되 나이표시를 안함으로 되어있는 데이타는
나이 맨끝에 '*'를 붙여야 됩니다 ( 예 > 김민아 3* 디자이너)
그러고 난다음에 나이표시안함으로 되어잇는것은 아무리 나이가 어려도 나이표시함 데이타보다 정렬순서가 뒤로 오게 하고 싶습니다
데이타 표시
=============================================================
8 나미수 18 학생 0
3 오설아 25 문방구 0
5 허심정 29 미용사 0
1 인싱찰 35 프로그래머 0
2 김민아 3* 디자이너 1
4 박성오 3* 사업가 1
7 안철수 4* 보험직 1
6 남상철 5* 영업직 1
이렇게 표시하고 싶습니다
제게는 너무 어렵습니다
좀 도와주세요
부탁드리겠습니다
Comment 3
-
이리
2017.03.31 11:20
;WITH TBLXAS(SELECT 1 AS PK_ID, '인싱찰' AS name, 35 AS age, '프로그래머' AS job, 0 AS sw UNION ALLSELECT 2 AS PK_ID, '김민아' AS name, 38 AS age, '디자이너' AS job, 1 AS sw UNION ALLSELECT 3 AS PK_ID, '오설아' AS name, 25 AS age, '문방구' AS job, 0 AS sw UNION ALLSELECT 4 AS PK_ID, '박성오' AS name, 39 AS age, '사업가' AS job, 1 AS sw UNION ALLSELECT 5 AS PK_ID, '허심정' AS name, 29 AS age, '미용사' AS job, 0 AS sw UNION ALLSELECT 6 AS PK_ID, '남상철' AS name, 58 AS age, '영업직' AS job, 1 AS sw UNION ALLSELECT 7 AS PK_ID, '안철수' AS name, 47 AS age, '보험직' AS job, 1 AS sw UNION ALLSELECT 8 AS PK_ID, '나미수' AS name, 18 AS age, '학생' AS job, 0 AS sw)SELECT PK_ID, name, CASE sw WHEN 0 THEN CAST(age AS CHAR(2)) ELSE SUBSTRING(CAST(age AS CHAR(2)), 1, 1) + '*' END AS age2, job, swFROM TBLXORDER BY sw, age나이가 2자리인것만 고려하였습니다.1자리나 3자리가 있을시에는 CASE문을 수정하셔야 합니다. -
문상연
2017.03.31 12:10
정말 고맙습니다 좋은 주말 보내세요
-
HolyGrail
2017.04.04 10:57
전이렇게..SELECT PK_ID, name, job, sw, CASE sw WHEN 0 THEN CAST(age AS NVARCHAR) WHEN 1 THEN LEFT(CAST(age AS NVARCHAR),1) + '*' END AS ageFROM temptblORDER BY sw ASC, age ASC