2011-05-17 102 views
5

我想是這樣的:我可以在OUTPUT子句中使用DISTINCT嗎?

INSERT INTO MyTable (
     Col1 
     ,Col2) 
OUTPUT DISTINCT -- issue is with DISTINCT 
     INSERTED.Col1 
     ,@otherParameter 
     INTO IdListTable 
SELECT ColA 
     ,ColB 
     ,SUM(ImportantNumber) 
FROM MyOtherTable 
GROUP BY ColA, ColB 

除了SQL不希望我的OUTPUT子句中使用DISTINCT。我想到的解決方法是爲輸出創建一個臨時表,然後INSERT DISTINCTIdListTable。任何想法在不同的解決方法?

回答

3

用輸出語句中的臨時表(或表變量,取決於行數)替換IdListTable。然後用Select Distinct從臨時表中運行第二個Insert語句到IdListTable中。

INSERT INTO MyTable (
     Col1, 
     Col2) 
OUTPUT 
     INSERTED.Col1, 
     @otherParameter 
     INTO #tempIdListTable 
SELECT ColA, 
     ColB, 
     SUM(ImportantNumber) 
FROM MyOtherTable 
GROUP BY ColA, ColB 

Insert into IdListTable 
Select distinct col1, col2 from #tempIdListTable 
+0

這就是我現在正在做的,我希望我能做出一個單一的說法。 – Brad 2011-05-17 18:00:25

+0

我不相信Output子句支持任何類型的分組或排序;我認爲你必須把它作爲兩個單獨的陳述。 – 2011-05-17 18:17:36

+0

@JeffSiver你可以在目標表上使用ignore_dup_key來做到這一點 – gordy 2014-05-02 20:37:21

相關問題