[MSSQL SERVER 기본에서 실무까지] 임시테이블 3-16

2021. 12. 17. 12:36개발/MSSQL

  1. 임시테이블이란?
    • 임시적으로테이블을 생성하고 더 이상 필요 없을 경우 자동으로 제거되는 테이블


  2. 특징
    • 동일한 이름으로 생성된 임시테이블도 각각 독립적으로 생성되기 때문에 동시에 다른 작업자와 동일한 작업을 수행해도 데이터가 서로 충돌하지 않는다.


  3. 생성
    • #TableName 일반 임시 테이블 다른사용자가 조회 또는 입력 불가능
    • ##TableName 다른 사용자가 조회 또는 입력이 가능 (글로벌 임시테이블 이라고도 함)


  • CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
CREATE TABLE T매출 (
     일자 NVARCHAR(08)
    ,제품 NVARCHAR(30)
    ,수량 NUMERIC(18,0DEFAULT 0 NULL)
 
    INSERT INTO T매출 (일자, 제품, 수량)
        VALUES ('20200101''A3'10)
              ,('20200101''A2'20)
              ,('20200102''A1'30)
              ,('20200301''A3'40)
 
CREATE TABLE T매입 (
     일자 NVARCHAR(08)
    ,제품 NVARCHAR(30)
    ,수량 NUMERIC(18,0DEFAULT 0 NULL)
 
    INSERT INTO T매입 (일자, 제품, 수량)
        VALUES ('20200101''A1'100)
              ,('20200101''A1'200)
              ,('20200102''A2'300)
              ,('20200301''A3'400)

SELECT *
FROM T매출

SELECT *
FROM T매입
 
CREATE TABLE #임시1(
    년월        NVARCHAR(08)
    ,제품        NVARCHAR(30)
    ,매입수량    NUMERIC(18,0DEFAULT 0 NOT NULL --기본값 0설정
    ,매출수량    NUMERIC(18,0DEFAULT 0 NOT NULL --기본값 0설정
    )
 
    INSERT INTO #임시1 (년월, 제품, 매입수량)
    SELECT LEFT(A.일자, 6)
            ,A.제품
            ,매입수량 = SUM(A.수량)
    FROM    T매입 A
    GROUP BY LEFT(A.일자, 6), A.제품
 
    INSERT INTO #임시1 (년월, 제품, 매출수량)
    SELECT LEFT(A.일자, 6)
            ,A.제품
            ,매출수량 = SUM(A.수량)
      FROM    T매출 A
      GROUP BY LEFT(A.일자, 6), A.제품
 
    SELECT A.년월, A.제품
        , 매입수량 = SUM(A.매입수량)
        , 매출수량 = SUM(A.매출수량)
      FROM #임시1 A
     GROUP BY A.년월, A.제품
     ORDER BY A.년월, A.제품
 
cs

결과