2016-03-23 28 views
0

Tsql'de dinamik olarak bir geçici olarak oluşturmaya çalışıyorum. Bir sütundaki bazı verileri (başka bir dinamik sorgunun sonucu olarak) veren bir sorgum var. Örneğin, 2011/2012 gibi yılları söyleyin. Bu bir sütunda olacaktır. İstediğim her satırın değerini seçmek ve int türünde bir sütun adı olarak adlandırmaktır. Daha sonra, veriyi içine dökmek için bu geçici tabloyu kullanabilirim.tsql tablosunda dinamik oluşturma

Herhangi bir öneriniz var mı?

cevap

0

Böyle bir şeyi kullanabilir miydiniz?

DECLARE @Tab VARCHAR(MAX) 
SET @Tab = 'CREATE TABLE #Whatever (' 

SELECT @Tab = @Tab + QUOTENAME(ColumnName) + ' INT NULL 
,' 
FROM @This 
SELECT @Tab = SUBSTRING(@Tab,1,LEN(@Tab)-1) + ')' 
PRINT @Tab 
-- EXEC (@Tab) 

İki nokta: Sen tabloyu değiştirmek için, sonra dinamik sql kullanmadan geçici tablo oluşturmak select ifadesi ayarlamak gerekir fark edebilirsiniz; Bu, tablonun geçerli bağlamda mevcut olmasını sağlar - create ifadesi dinamikse, bir hatayla karşılaşabilirsiniz.

Bunun gibi dinamik bir sql kullanmayı sevmiyorum - daha sonra daha iyi bir seçenek olabilir (bu durumda mümkün olup olmadığından emin değilim) sütunları döndürmek için bir pivot kullanabilirsiniz.