2013-07-10 70 views
1
INSERT INTO BORCODEME 
    (BORCODEME.IslemTarihi, BORCODEME.IslemAciklamasi,BORCODEME.IslemTutari) 
VALUES( 
    (SELECT BORCLAR.BorcTarih,BORCLAR.BorcAciklama,BORCLAR.BorcTutari FROM BORCLAR WHERE BORCLAR.BorcMusteriID=6), 
    (SELECT ODEMELER.OdemeTarihi,ODEMELER.OdemeAciklama,ODEMELER.OdemeTutar FROM ODEMELER WHERE ODEMELER.OdemeMusteriID=6) 
) 

我的SQL命令是這樣的,我有這些錯誤;SQL Server插入命令錯誤

消息116,級別16,狀態1,行4
只有一個表達式可以在選擇列表中當子查詢不與EXISTS引入被指定。
消息116,級別16,狀態1,行6
子查詢沒有引入EXISTS時,只能在選擇列表中指定一個表達式。
Msg 109,Level 15,State 1,Line 1
INSERT語句中的列數多於VALUES子句中指定的值。 VALUES子句中的值數量必須與INSERT語句中指定的列數相匹配。

+1

您正在選擇多個列,每個子選擇應該爲** single **列提供值。 –

回答

2

不知道你真的在找什麼 - 你想插入兩個表中的三列嗎?然後再編寫INSERT這樣的:

INSERT INTO BORCODEME(IslemTarihi, IslemAciklamasi, IslemTutari) 
    SELECT 
     BORCLAR.BorcTarih, BORCLAR.BorcAciklama, BORCLAR.BorcTutari 
    FROM 
     BORCLAR 
    WHERE 
     BORCLAR.BorcMusteriID = 6 

    UNION 

    SELECT 
     ODEMELER.OdemeTarihi, ODEMELER.OdemeAciklama, ODEMELER.OdemeTutar 
    FROM 
     ODEMELER 
    WHERE 
     ODEMELER.OdemeMusteriID = 6 

因此,這將從ODEMELER插入來自BORCLAR三個值和另一排的三個值。

如果這你想要的東西,那麼你需要詳細你真正想要的,而不是解釋.....

在一般情況下,你可以要麼使用這種語法:

INSERT INTO dbo.TargetTable (List-of-Columns) 
VALUES (List-of-atomic-values) 

,如果你不能提供原子VAL統一電力公司(文字或T-SQL變量),那麼你可以使用

INSERT INTO dbo.TargetTable (List-of-Columns) 
    SELECT list-of-columns 
    FROM dbo.SourceTable 

,但你不能混用 - 你不能有VALUES然後用SELECT它裏面

在這兩種情況下, 數在INSERT語句列必須與VALUES提供的原子值的數目或列的由選擇的號碼準確匹配10聲明

+0

當然,非常感謝你的回答。 – EthemX