我可以在OUTPUT子句中使用DISTINCT吗?

时间:2011-05-17 17:42:22

标签: sql sql-server-2008 insert 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不希望我在DISTINCT子句中使用OUTPUT。我想到的解决方法是为输出创建临时表,然后INSERT DISTINCT创建IdListTable。有关不同解决方法的任何想法吗?

1 个答案:

答案 0 :(得分:6)

在Output语句中将IdListTable替换为临时表(或表变量,具体取决于行数)。然后使用Select Distinct从临时表中向IdListTable运行第二个Insert语句。

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