SELECT
    PART_NAME,
    PM_NAME,
    AM_NAME,
    REPLACE(REPLACE(PROD_NAME,CHR(13),''),CHR(10),'')PROD_NAME,
    NULL PROD_NAME_SALE_AMT_14 ,
    NULL PROD_NAME_SALE_AMT_15 ,
    NULL PROD_NAME_SALE_14_15_RATE,
    SUM(NVL(MON_TT,0)) PROD_BURGET,
    NULL PROD_BURGET_RATE,
    SUM(DECODE(TYPE,'학회(Booth)' ,NVL(MON_TT,0))) BURGET_T_01,
    SUM(DECODE(TYPE,'제품설명회'  ,NVL(MON_TT,0))) BURGET_T_02,
    SUM(DECODE(TYPE,'세미나'      ,NVL(MON_TT,0))) BURGET_T_03,
    SUM(DECODE(TYPE,'학술마케팅'  ,NVL(MON_TT,0))) BURGET_T_04,
    SUM(DECODE(TYPE,'임상연구비'  ,NVL(MON_TT,0))) BURGET_T_05,
    SUM(DECODE(TYPE,'교육(영업자)',NVL(MON_TT,0))) BURGET_T_06,
    SUM(DECODE(TYPE,'고객관리'    ,NVL(MON_TT,0))) BURGET_T_07,
    SUM(DECODE(TYPE,'홍보물제작'  ,NVL(MON_TT,0))) BURGET_T_08,
    SUM(DECODE(TYPE,'Sample'      ,NVL(MON_TT,0))) BURGET_T_09,
    SUM(DECODE(TYPE,'Device제작'  ,NVL(MON_TT,0))) BURGET_T_10,
    SUM(DECODE(TYPE,'소모품'      ,NVL(MON_TT,0))) BURGET_T_11,
    SUM(DECODE(TYPE,'PM운영'      ,NVL(MON_TT,0))) BURGET_T_12,
    SUM(DECODE(TYPE,'PM교육'      ,NVL(MON_TT,0))) BURGET_T_13,
    SUM(DECODE(TYPE,'인센티브'    ,NVL(MON_TT,0))) BURGET_T_14
FROM TOTAL_BURGET_M
GROUP BY
    PART_NAME,
    PM_NAME,
    AM_NAME,
    REPLACE(REPLACE(PROD_NAME,CHR(13),''),CHR(10),'')
ORDER BY
    PART_NAME,
    PM_NAME,
    AM_NAME,
    REPLACE(REPLACE(PROD_NAME,CHR(13),''),CHR(10),'')

'SQL 관련' 카테고리의 다른 글

날짜 관련 SQL  (0) 2016.07.14
부서별 건수  (0) 2015.03.10
SUM()함수에서 NULL값의 처리  (0) 2014.12.11
계층형 쿼리 ( START WITH ... CONNECT BY )  (0) 2014.09.29
유용한 쿼리 #1  (0) 2014.09.29
Posted by 달콤한부자
,

오라클 / Oracle replace 함수로 문자열 치환하기

 

▣ 문법 및 사용 방법

 

사용법  REPLACE(string, search_string, replace_string)

 

string의 문자열 중 search_sting을 찾아 replace_string로 치환 합니다.

​고객 정보 테이블에 전화번호가 PHONE이라는 컬럼으로 저장이 되어있고, 그 포멧은 010-xxxx-yyyy 라고 가정을 하고 어떻게 사용을 하면 되는지 예를 들어보겠습니다.

 

 

 

1) SELECT시 사용 법 

→ 010xxxxyyyy의 포멧으로 데이터를 추출 해야 하는 경우

SELECT REPLACE(PHONE, '-', '') FROM 고객정보;

이렇게 '-' 문자열을 공백으로 치환 해주면 '-'가 제거된 010xxxxyyyy 형식의 전화번호를 리턴 받을 수 있습니다.

 

 

2) UPDATE시 사용 법

010xxxxyyyy의 포멧으로 PHONE2 컬럼에 저장을 해야하는 경우

UPDATE 고객정보 SET PHONE2 = REPLACE(PHONE, '-', '');

 

3) 값에 엔터값이 있을경우

REPLACE(REPLACE(string,CHR(13),''),CHR(10),'');

 

* 참고 Chr(13) 값과 Chr(10) 정의

Chr(13)동일한 줄의 첫번째 자리에 커서를 위치 시킵니다. 이것을 캐리지 리턴 이라고 합니다.

Chr(10)현재 커서가 위치한 곳에서 아래로 한줄 내리는 기능을 담당합니다. 이것을 라인피드 라고 합니다.

즉, 우리가 키보드의 엔터키를 치면 눈에는 다음줄 처음으로 이동하지만

내부적으로는 현재 줄의 첫번째 자리에 커서가 갔다가 다음줄로 내려서는 것입니다.

 

Posted by 달콤한부자
,


시트를 파일로 분리

엑셀창에서 Alt-F11 누르시고 VBA 창이 나타나면 삽입-모듈 하시고 아래 코드를 붙여넣으세요.

코드 가운데 커서를 두시고 F5 를 누르시면 시트를 같은 폴더내 파일로 저장합니다.


Sub toFile()
Dim tR As Range
Dim tmp As String
For i = 1 To Sheets.Count
Sheets(i).Select
tmp = ActiveSheet.Name

Set tR = ActiveSheet.Cells
tR.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
Cells.EntireColumn.AutoFit
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs tmp & ".xls"
Application.DisplayAlerts = True
ActiveWindow.Close
Next i
End Sub

Posted by 달콤한부자
,