2011-05-17 103 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

相关问题