2011-08-17 83 views
6

我有一個名爲Field_Data和表中的數據表的樣子:串聯詮釋列

Date       Track_ID   Item# 
2011-02-25 00:00:00.000  70212    1 
2011-02-25 00:00:00.000  70212    2 
2011-03-09 00:00:00.000  70852    1 
2011-03-09 00:00:00.000  70852    3 

我試圖讓輸出:

Date       Final_ID 
2011-02-25 00:00:00.000  70212_1 
2011-02-25 00:00:00.000  70212_2 
2011-03-09 00:00:00.000  70852_1 
2011-03-09 00:00:00.000  70852_3 

我試圖做這樣的事情:

Select Date,Track_ID + '_' + Item# AS Final_ID 
From Field_Data 

但它給了我以下錯誤:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value '_' to data type int.

任何人都可以幫助我如何做到這一點?

回答

20

你需要轉換INT領域varchar

Select Date,CAST(Trakc_ID as varchar(20)) + '_' + CAST(Item# as varchar(20)) as Final_ID 
From Field_Data 
+1

擊敗我11秒! –

+1

@Abe - 你贏了最後一輪,所以現在我們並列我猜。 – JNK

+2

請不要使用沒有長度的varchar。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx –

2

單挑任何新頁面的訪問者,在SQL Server 12+,有一個CONCAT功能可用。

SELECT CONCAT([Date], [TrackId], '_', [ItemNumber]) AS FinalId 
FROM FieldData