I'm mencoba untuk menulis query yang ekstrak dan mengubah data dari suatu tabel dan kemudian memasukkan data tersebut ke dalam tabel yang lain. Ya, ini adalah sebuah data warehouse query dan I'm melakukan hal itu di MS Access. Jadi pada dasarnya saya ingin beberapa query seperti ini:
INSERT INTO Table2(LongIntColumn2, CurrencyColumn2) VALUES
(SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 FROM Table1 GROUP BY LongIntColumn1);
Aku mencoba tapi mendapatkan pesan kesalahan sintaks.
Apa yang akan anda lakukan jika anda ingin melakukan hal ini?
Anda memiliki dua sintaks pilihan:
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
Pilihan 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
Ingatlah bahwa Opsi 2 akan membuat sebuah tabel dengan kolom-kolom pada proyeksi (orang-orang yang di PILIH).
Saya percaya masalah anda dalam hal ini adalah "nilai" kata kunci. Anda gunakan "nilai" kata kunci ketika anda memasukkan hanya satu baris data. Untuk memasukkan hasil pilih, anda don't membutuhkannya.
Juga, anda benar-benar don't membutuhkan tanda kurung di sekitar pernyataan select.
Dari baca:
Beberapa-catatan append query:
INSERT INTO target [(field1[, field2[, …]])] [IN externaldatabase]
SELECT [source.]field1[, field2[, …]
FROM tableexpression
Satu catatan append query:
INSERT INTO target [(field1[, field2[, …]])]
VALUES (value1[, value2[, …])
Menghapus "nilai" bila anda're menambahkan sekelompok baris, dan menghapus tanda kurung tambahan. Anda dapat menghindari referensi melingkar dengan menggunakan alias untuk avg(CurrencyColumn) (seperti yang anda lakukan dalam contoh anda) atau dengan tidak menggunakan alias sama sekali.
Jika nama kolom yang sama di kedua tabel, kueri anda akan menjadi seperti ini:
INSERT INTO Table2 (LongIntColumn, Junk)
SELECT LongIntColumn, avg(CurrencyColumn) as CurrencyColumn1
FROM Table1
GROUP BY LongIntColumn;
Dan itu akan bekerja tanpa alias:
INSERT INTO Table2 (LongIntColumn, Junk)
SELECT LongIntColumn, avg(CurrencyColumn)
FROM Table1
GROUP BY LongIntColumn;
memasukkan data berupa satu meja ke meja lain dalam berbagai DATABASE
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
Yah saya pikir cara terbaik akan (akan?) untuk menentukan 2 recordsets dan menggunakan mereka sebagai perantara antara 2 tabel.
Metode ini sangat menarik jika anda berencana untuk meng-update tabel dari database yang berbeda (yaitu masing-masing recordset dapat memiliki koneksi sendiri ...)
Apakah anda ingin menyisipkan ekstraksi dalam tabel yang ada?
Jika itu tidak masalah maka anda dapat mencoba query di bawah ini:
SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 INTO T1 FROM Table1
GROUP BY LongIntColumn1);
Itu akan membuat sebuah tabel baru -> T1 dengan diekstrak informasi