2011-05-17 27 views
5

Şunun gibi bir şey çalışıyorum:DISTINCT'i OUTPUT yan tümcesinde kullanabilir miyim?

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 hariç OUTPUT maddesinde DISTINCT kullanmamı istemiyor. Düşündüğüm geçici çözüm, çıktı için geçici bir tablo oluşturmaktı, sonra INSERT DISTINCT'e IdListTable. Farklı bir geçici çözüm hakkında herhangi bir fikir var mı?

cevap

3

IdListTable'ı, Çıkış deyimindeki geçici bir tablo (veya satır sayısına bağlı olarak bir tablo değişkeni) ile değiştirin. Ardından, Select Disinct ile geçici tablodan IdListTable içine ikinci bir Insert ifadesi çalıştırın.

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

Şu anda yaptığım şey şu ki, tek bir açıklama yapabilmeyi umuyordum. – Brad

+0

Çıktı maddesinde herhangi bir gruplama veya sıralama türünün desteklenmediğine inanmıyorum; Sanırım iki ayrı ifade olarak bırakmak zorundasın. –

+0

@JeffSiver hedef tablosunda ignore_dup_key'i tek bir çekimde kullanabilmek için – gordy

İlgili konular