2016-04-04 58 views
0

我有一個存儲過程,我試圖創建一個臨時表。但是我需要根據一些條件添加數據,並在添加到臨時表中的附加字段中捕獲這些條件。添加列到臨時表與選擇的統計

我開始了這樣的:

select top 0 
into #mytable 
from UserTable 

這我發現簡單的拷貝具有相同的字段和類型的基本結構。然後,我需要添加一個字段:

alter table #mytable ADD reasontype varchar 

的我在檢查表進行多次傳球,這裏就是其中之一:

insert into #mytable 
select distinct a.*, 'Annual' 
from UserTable a 
where (a.EnrollmentDate < DATEADD(year, -1, getdate()) 

這是選擇那些需要進行年度審覈。該過程編譯沒有錯誤,但當我嘗試填充數據表時,我得到的錯誤是字符串或二進制數據將被截斷。我究竟做錯了什麼?

+1

也許您需要在varchar上使用一個長度。 ('年度'被截斷爲'A') – Tibrogargan

+0

@Tibrogargan這就是答案;你應該提交它:) –

回答

1
alter table #mytable ADD reasontype varchar(max) 

如果這樣的作品,無論是使用「最大」或價值不會截斷你的價值觀......或使用,其中長度reasontype

例如左最長值相匹配的LEFT聲明:

alter table #mytable ADD reasontype varchar(3) 


insert into #mytable 
select distinct a.*, LEFT('Annual',3) 
from UserTable a 
where (a.EnrollmentDate < DATEADD(year, -1, getdate()) 

但你可能只是想這樣的:

alter table #mytable ADD reasontype varchar(6) /* where 6 is the length of the string "Annual" */ 
0

使用長度在你的VARCHAR,「年度「被截斷爲」A「。如果您計劃對reasontype字段建立索引,請不要使用varchar(max),它會超出可索引字段的最大寬度