2013-02-20 15 views
-1

我需要你的幫助插入從選擇,但我的查詢對我來說太複雜。我的邏輯是低於如何在更多列插入時選擇案例?


    INSERT INTO TheTable(A,CustomerNo,item,B,C,D) 
    SELECT DISTINCT 

     case when ((select count(*) from hesap where CustomerNo=e.CustomerNo)0) then 
select top 1, A,CustomerNo,item+1,B,C,D 
from dbo.Table1 order by ekno desc 

) else select 100,e.CustomerNo,e.item,0,e.defterid,'C' 
from Table2 e end 
    

但我不能這樣做......

+0

有什麼問題嗎? – DevelopmentIsMyPassion 2013-02-20 08:28:40

+0

你願意接受答案嗎? – gaborsch 2013-02-20 12:27:54

+0

「我做不到」不能很好地描述問題。我假設你已經知道你的語法是無效的,那麼你能解釋一下你想要做什麼嗎? 「如果......那麼......」可能比「CASE」表達式更簡單。 – Pondlife 2013-02-20 14:30:54

回答

0

您可以列的基礎只做case

你可以做的是UNION ing兩個選擇,並插入結果。就像

INSERT INTO TheTable(A,CustomerNo,item,B,C,D) 
SELECT ... 
WHERE (select count(*) from hesap where CustomerNo=e.CustomerNo) = 0 
UNION 
SELECT select 100,e.CustomerNo,e.item,0,e.defterid,'C' 
WHERE (select count(*) from hesap where CustomerNo=e.CustomerNo) > 0 

對不起,我不能總是按照你的選擇,但我希望你有想法。在UNION之前,你必須分開兩種可能性,因此每個原始行只能存在1行。

0

你可以嘗試刪除頂部喜歡這張後面的逗號:

INSERT INTO TheTable(A,CustomerNo,item,B,C,D) 
     SELECT DISTINCT 
     case when ((select count(*) from hesap where CustomerNo=e.CustomerNo)0) then 
     select top(1) A,CustomerNo,item+1,B,C,D 
     from dbo.Table1 order by ekno desc 
     ) 
else select 100,e.CustomerNo,e.item,0,e.defterid,'C' 
from Table2 e end 
+0

我不能這樣做: – programmerist 2013-02-20 09:59:51

+0

看起來您已經選擇了7列(1,A,CustomerNo,item + 1,B,C,D)插入到6(A,CustomerNo,item,B,C,D)列。如果我錯了,請糾正我。我編輯了我的答案,可以嘗試'TOP(1)'語法。 – 2013-02-20 10:30:40