[SQL] 다른 테이블에서 추출한 테이블 레코드에 INSERT 작업을 수행하는 방법
SQL다른 테이블에서 추출한 테이블 레코드에 INSERT 작업을 수행하는 방법
나는 쿼리를 작성하기 위해 노력하고있어 그 테이블에서 다음 다른 테이블에 그 데이터를 삽입 추출 및 변환 데이터입니다. 예,이 데이터웨어 하우징 쿼리 내가 MS 액세스에서 그것을하고 있어요. 그래서 기본적으로 나는이 같은 일부 쿼리를 원하는 :
INSERT INTO Table2(LongIntColumn2, CurrencyColumn2) VALUES
(SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 FROM Table1 GROUP BY LongIntColumn1);
나는 시도했지만 구문 오류 메시지가 표시됩니다.
이 작업을 수행하려는 경우 당신은 무엇을 할 것인가?
해결법
-
==============================
1.없음 "VALUES 없다", 아니 괄호 :
없음 "VALUES 없다", 아니 괄호 :
INSERT INTO Table2(LongIntColumn2, CurrencyColumn2) SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 FROM Table1 GROUP BY LongIntColumn1;
-
==============================
2.두 구문 옵션이 있습니다 :
두 구문 옵션이 있습니다 :
옵션 1
CREATE TABLE Table1 ( id int identity(1, 1) not null, LongIntColumn1 int, CurrencyColumn money ) CREATE TABLE Table2 ( id int identity(1, 1) not null, LongIntColumn2 int, CurrencyColumn2 money ) INSERT INTO Table1 VALUES(12, 12.00) INSERT INTO Table1 VALUES(11, 13.00) INSERT INTO Table2 SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 FROM Table1 GROUP BY LongIntColumn1
옵션 2
CREATE TABLE Table1 ( id int identity(1, 1) not null, LongIntColumn1 int, CurrencyColumn money ) INSERT INTO Table1 VALUES(12, 12.00) INSERT INTO Table1 VALUES(11, 13.00) SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 INTO Table2 FROM Table1 GROUP BY LongIntColumn1
옵션 2 투사합니다 (SELECT에 그)에서만 열이있는 테이블을 만들 것을 염두에 곰.
-
==============================
3.값과 괄호를 모두 제거합니다.
값과 괄호를 모두 제거합니다.
INSERT INTO Table2 (LongIntColumn2, CurrencyColumn2) SELECT LongIntColumn1, Avg(CurrencyColumn) FROM Table1 GROUP BY LongIntColumn1
-
==============================
4.당신의 SQL에서 값을 제거합니다.
당신의 SQL에서 값을 제거합니다.
-
==============================
5.나는이 경우에 문제가 "값"키워드 믿습니다. 당신은 데이터의 한 행을 삽입 할 때 당신은 "값"키워드를 사용합니다. 선별의 결과를 삽입하는 경우, 당신은 그것을 필요하지 않습니다.
나는이 경우에 문제가 "값"키워드 믿습니다. 당신은 데이터의 한 행을 삽입 할 때 당신은 "값"키워드를 사용합니다. 선별의 결과를 삽입하는 경우, 당신은 그것을 필요하지 않습니다.
또한, 당신은 정말 SELECT 문 주위에 괄호가 필요하지 않습니다.
MSDN에서 :
다중 레코드 추가 쿼리 :
INSERT INTO target [(field1[, field2[, …]])] [IN externaldatabase] SELECT [source.]field1[, field2[, …] FROM tableexpression
단일 레코드 추가 쿼리 :
INSERT INTO target [(field1[, field2[, …]])] VALUES (value1[, value2[, …])
-
==============================
6.당신이 행의 그룹을 추가 할 때 "값"을 제거하고 여분의 괄호를 제거합니다. 당신은 (당신이 당신의 예에서와 마찬가지로) 평균 (CurrencyColumn)의 별칭을 사용하여 순환 참조를 피하거나 전혀 별칭을 사용하지 않음으로써 할 수 있습니다.
당신이 행의 그룹을 추가 할 때 "값"을 제거하고 여분의 괄호를 제거합니다. 당신은 (당신이 당신의 예에서와 마찬가지로) 평균 (CurrencyColumn)의 별칭을 사용하여 순환 참조를 피하거나 전혀 별칭을 사용하지 않음으로써 할 수 있습니다.
열 이름이 두 테이블에 동일한 경우, 쿼리는 다음과 같이 될 것이다 :
INSERT INTO Table2 (LongIntColumn, Junk) SELECT LongIntColumn, avg(CurrencyColumn) as CurrencyColumn1 FROM Table1 GROUP BY LongIntColumn;
그리고 그것은 별칭없이 작동합니다 :
INSERT INTO Table2 (LongIntColumn, Junk) SELECT LongIntColumn, avg(CurrencyColumn) FROM Table1 GROUP BY LongIntColumn;
-
==============================
7.그럼 난 가장 좋은 방법은 (수 있습니까?) 것 2 개 레코드를 정의하고 두 테이블 사이의 중간으로 사용할 생각합니다.
그럼 난 가장 좋은 방법은 (수 있습니까?) 것 2 개 레코드를 정의하고 두 테이블 사이의 중간으로 사용할 생각합니다.
당신이 다른 데이터베이스에서 테이블을 업데이트하려는 경우이 방법은 특히 재미있다 (즉, 자신의 연결을 가질 수있는 각 레코드 ...)
-
==============================
8.다른 데이터베이스의 다른 테이블을 하나 개의 테이블에서 데이터를 삽입
다른 데이터베이스의 다른 테이블을 하나 개의 테이블에서 데이터를 삽입
insert into DocTypeGroup Select DocGrp_Id,DocGrp_SubId,DocGrp_GroupName,DocGrp_PM,DocGrp_DocType from Opendatasource( 'SQLOLEDB','Data Source=10.132.20.19;UserID=sa;Password=gchaturthi').dbIPFMCI.dbo.DocTypeGroup
-
==============================
9.기존 테이블에 추출을 삽입 하시겠습니까?
기존 테이블에 추출을 삽입 하시겠습니까?
그 다음 문제가되지 않는 경우는 쿼리 아래를 시도 할 수 있습니다 :
SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 INTO T1 FROM Table1 GROUP BY LongIntColumn1);
그것은 새로운 테이블을 생성합니다 -> 추출 된 정보와 T1
from https://stackoverflow.com/questions/74162/how-to-do-insert-into-a-table-records-extracted-from-another-table by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 단지 null이 아닌 값을 선택 MYSQL (0) | 2020.03.21 |
---|---|
[SQL] 항상 NVARCHAR (MAX)를 사용하는 불이익이 있습니까? (0) | 2020.03.21 |
[SQL] 어떻게 ID를 사용하여 여러 SQL 테이블을 가입 할 수 있습니까? (0) | 2020.03.21 |
[SQL] 필드 단어가 포함 된 SQL SELECT (0) | 2020.03.21 |
[SQL] COUNT (*)는 항상 결과를 반환합니까? (0) | 2020.03.20 |