데이터 조작 - 데이터 입력하기 (INSERT VALUES, SELECT, BULK)
- 아는 것도 있지만, 살짝 아리까리한것도 있어서 한 번에 정리 * INSERT VALUES (& 향상된 VALUES) - 대부분이 많이 아는 (기초적인) 구문일듯. INSERT INTO dbo.Orders(orderid, empid, custid) VALUES(10002, 5, 'B'); INSERT INTO dbo.Orders (orderid, orderdate, empid, custid) VALUES (10003, '20090213', 4, 'B') , (10004, '20090214', 1, 'A') , (10005, '20090213', 1, 'C') , (10006, '20090215', 3, 'C'); -- 여러 행을 쉼표로 구분해서 넣을수도 사실은 이 구문보단 아래의 사항을 복습하려는게 목..
그룹핑 집합 (GROUPING SETS, CUBE, ROLLUP, GROUPING, GROUPING_ID)
그룹핑 집합? 그룹핑을 수행하는 특성들의 집합. 아래의 4개의 결과 집합을 하나의 단일 결과집합으로 반환한다고 한다면, SELECT empid, custid, SUM(qty) AS SumQty FROM dbo.Orders GROUP BY empid, custid UNION ALL SELECT empid, NULL, SUM(qty) AS SumQty FROM dbo.Orders GROUP BY empid UNION ALL SELECT NULL, custid, SUM(qty) AS SumQty FROM dbo.Orders GROUP BY custid UNION ALL SELECT NULL, NULL, SUM(qty) AS SumQty FROM dbo.Orders; 코드의 길이, 성능이라는 문제를 내포한다. ..
데이터 피벗, 언피벗 (Pivot, Unpivot)
데이터 피벗? 행을 기반으로 하는 데이터를 컬럼을 기반으로 하는 상태로 바꾸는 것. 다음같은 내용의 결과가 있다고 할 때, SELECT empid, custid, SUM(qty) AS SumQty FROM dbo.Orders GROUP BY empid, custid; 직원 ID별 (행), 고객별 (컬럼) 의 총 수량을 출력하고자 하는 리포트를 만들고자 한다면. (피벗팅) 모든 피벗팅은 3가지 논리적 프로세싱 단계로 수행되며, 각 단계마다 필요한 요소가 존재한다. 그룹핑 - 연관된 그룹핑 또는 행 요소를 필요로 하며, 전개 - 연관된 전개 요소 또는 컬럼 요소를 필요로 하며, 집계 - 연관된 집계 요소와 집계 함수를 필요로 한다 여기선 각 직원ID마다 결과를 하나의 행으로 출력 (그룹핑) 고객ID별로 수량..