[DB] SQL문의 활용과 중요성
예전 은행해서 근무하던 작은형 왈, "SQL문의 작성 능력에 따라 연봉이 달라진다."
당시 저는 고작 INSERT, DELETE, UPDATE문 정도만 할 줄 알았던 시기라, 그냥 그러려니 했습니다.
요즘은 DB를 가지고 코딩을 많이 하다 보니, 그 말을 많이 실감합니다.
1. VBA 초보 시절
DB에서 불러온 데이타를, 배열로 받아 루프를 돌리면서
문자열 함수를 이용해서 가공한 다음 엑셀 시트에 뿌려 줌
나름데로 뿌듯했음
2. 현재
데이터를 SQL문으로 가공해서 바로 엑셀에 뿌려줌
코드도 간결하고, 결과물 출력 수정도 쉽고, 속도도 빠르고.
3. 샘플 코드 (VB.NET) = 스샷은 아래에
Dim strSQL As String = "SELECT " & "CONCAT('G-', Repeat('0', 6- LENGTH(G_SER)), G_SER) AS SER, " & " G_GUIDE As GUIDE, COMPANY, G_GUEST As GUEST, " & "CONCAT(DATE_FORMAT(G_TOFF_DATE, '%b-%d'), ' (', G_WEEK_DAY, ')') AS TOFF_DATE, " & "G.GC AS GC, G_A_TIME AS ATIME, G_HOLES AS HOLES, G_PAX AS PAX, G_SELL_RATE AS SELL_RATE, " & "G_SELL_TOTAL AS SUM, G_PAY_METHOD AS BANK, G_PAY_DATE AS PAY_DATE, G_VCHER_DATE AS VCHER_DATE, " & "CASE " & "WHEN G_PROG_SER = '3' THEN 'CANCEL' " & "WHEN G_PROG_SER = '2' THEN 'DONE' " & "WHEN (`G_PAY_DATE` <> '0000-00-00' AND (`G_PAY_DATE` IS NOT NULL OR LENGTH(`G_PAY_DATE` > 0))) THEN 'PAID' " & "ELSE '' " & "END AS STATE, " & "'' As BALANCE, G_IS_HOLIDAY AS HOLIDAY " & "FROM (GBOOKING B JOIN HGC G On B.GC_SER = G.GC_SER) JOIN HMEMBERS M ON B.G_MEM_SER = M.MEM_SER " & condition_G & ";"
데이터행이 10만개라 한다면,
가변형 로우를 만들어서, 필요한 개수만큼 엑셀의 데이터가 있는 행을 늘였다 줄였다를 하도록 코딩
이렇게 하면, 스크롤의 번거로움이 다 사라짐
4. 결론
아직도 워크시트에 데이터를 입력하고 시트 함수를 이용해서 업무를 하고 계산다면 데이터베이스화 해서 사용해보라 권하고 싶싶습니다. 엑세스나 MS-SQL, MYSQL같은 데이터베이스가 아니어도, 엑셀 워크시트 자체가 데이터베이스가 될 수 있습니다. 이를 SQL문으로 CRUD를 구현할 수 있습니다. 업무가 훨씬 간결하고 수월해질 것입니다. 시간대비 인건비, 업무 효율성 등등 장점이 더 많습니다.
P.S. 윈도우즈에 리눅스 서버를 설치해서 사용하기를 정말 강력히 추천합니다.
저도 잘 몰라서 구현을 못했다고, 맘잡고 공부하고 하니 어렵지 않게 됩니다. 모든것을 이해하고 있는 것은 아니지만, 딱 필요한 만큼 공부해서 구현해보니, 정말 신세계입니다.
6. 아래는 엑셀에 출력한 스샷입니다. 검색 조건만 주고 출력하면 끝입니다.
번호 | 제목 | 작성자 | 작성일 | 추천 | 조회 |
[📚진짜쓰는 실무엑셀] IT/오피스 '1위' 베스트셀러! 엑셀 공부, 이 교재로 마스터하세요! (313)
![]() ![]() |
![]() ![]() |
2022.02.03 | 572 | 599376 | |
78094 |
[M365] 수식으로 고급필터 구현하기
![]() ![]() |
![]() |
2025.04.11 | 1 | 66 |
78009 |
LOOKUP을 XLOOKUP 처럼 사용 (2019 이하 필독)
![]() ![]() |
![]() |
2025.04.06 | - | 89 |
78002 |
[VBA] 괄호가 대응되게 문자열 잘라주는 함수
![]() |
![]() |
2025.04.05 | - | 39 |
77792 |
엑셀 그림 삽입이 안될 때.. (그림 삽입 비활성화 해결)
(1)
![]() ![]() |
![]() ![]() |
2025.03.24 | 2 | 333 |
77667 |
언피벗 툴 업그레이드 버전입니다.
![]() ![]() |
![]() |
2025.03.17 | - | 92 |
77635 |
머리글로 데이터 합치기 툴
![]() ![]() |
![]() |
2025.03.15 | 1 | 105 |
77598 |
MERGE(자석처럼 자료 붙이기) 툴입니다.
![]() ![]() |
![]() |
2025.03.13 | - | 142 |
77577 |
[VBA] 시트명들 가져오는 함수
![]() ![]() |
![]() |
2025.03.12 | 1 | 101 |
77544 |
LOOKUP 함수 사용법(2019 이하 필독)
![]() ![]() |
![]() |
2025.03.11 | - | 174 |
77543 |
[함수TIP] Date함수로 Eomonth함수 대체하기
(3)
![]() |
![]() |
2025.03.11 | 3 | 62 |
77481 |
쉽게 쓸 수 있는 언피벗 툴
![]() ![]() |
![]() |
2025.03.08 | 2 | 105 |
77468 |
월간단위 월주차 함수
![]() ![]() ![]() |
![]() ![]() |
2025.03.07 | - | 124 |
77385 |
TEXTJOIN 을 SUMPRODUCT 공식으로 2차원 데이터 다루기
![]() ![]() |
![]() |
2025.03.04 | - | 87 |
77355 |
TEXTJOIN 으로 2차원 데이터 다루기
![]() ![]() |
![]() |
2025.03.02 | 1 | 89 |
77353 |
& 기호로 SUMPRODUCT 2차원 데이터 다루기
![]() ![]() |
![]() |
2025.03.02 | - | 66 |
77351 |
단어 포함 여부 검색, 원하는 단어로 출력
![]() ![]() |
![]() |
2025.03.02 | 1 | 96 |
77238 |
휴일이면 1 아니면 0이 나오는 함수
![]() ![]() |
![]() |
2025.02.24 | - | 134 |
77072 |
SUMPRODUCT로 VLOOKUP 대체 (2차원 룩업 가능)
![]() ![]() |
![]() |
2025.02.16 | - | 242 |
76915 |
SUMPRODUCT로 2차원 데이터 다루기[응용]
![]() ![]() |
![]() |
2025.02.09 | 1 | 214 |
76913 |
SUMPRODUCT로 2차원 데이터 sumifs 처럼 다루기
![]() ![]() |
![]() |
2025.02.09 | - | 170 |
@dra**** 님 저도 프로그램 개발 했는데 이제는 다 잊어벼렸네요
Sql문 보니 옛날 생각납니다.
@dra**** 님 좋은 정보 감사합니다
@dra**** 님 감사합니다.
@dra**** 님 외국 은행은 잘 모르겠지만.. 국내 은행은 DB 접근 권한이 막혀있어서 외부에서 불러오는건 거의 불가능할지도 모르겠네요..
보안이 워낙 철저해다보니.. 조회 한번만 잘못해도 개인정보법 위반사항이라..
대부분 사내 툴로만 작업가능하다보니 불편한 점이 있네요 ㅜ
@마이무거따 님 작은형이 전산실 개발부에서 일했습니다. ㅎㅎ