2014-04-01 54 views
-1

我有以下數據表:SQL更新與串連

Description | LongDescription | rn 
TEST     ERIC   1 
TEST     KEN   2 
TEST     JIM   3 
TEST     TOM   4 

我希望能夠說得清RN = 1和LongDescription =埃裏克串聯的RN 1 LongDescriptions和2 - 使用更新聲明這樣結束了

Description | LongDescription | rn 
TEST     ERIC - KEN  1 
TEST     KEN   2 
TEST     JIM   3 
TEST     TOM   4 

另外需要一提的是有更多的數據比上述RN爲1個2等

,這樣會有更多的情況下,上市這甚至可能嗎?

+0

如果您在示例數據中顯示了多行,其中'rn = 1'並提供了通過選擇「ERIC」行進行更新而不是「KEN」行的邏輯。 – Thomas

回答

1

試試上面這個

UPDATE desc_table 
SET desc_table.longdescription = desc_table.longdescription+'-'+b.longdescription 
FROM desc_table 
INNER JOIN desc_table b 
ON desc_table.rn = b.rn-1 
+0

謝謝,有一點調整這讓我需要我。 – user3219693

+0

不客氣。 – Sharad

0

請嘗試:

update tbl 
set LongDescription= LongDescription +'-'+(select LongDescription from tbl where rn=2) 
where rn=1 
+0

啊,我shoukd提到,表中有比數據更多的數據,所以當我運行這個查詢時,我得到的子查詢返回多個值 – user3219693

+0

因此,什麼是選擇LongDescription值的標準? – TechDo

+0

at the minute我刪除了表中的所有條目,其中rn <> 1返回每個用戶的最新記錄,還有一個用戶列,但是我希望能夠在LongDescription = Ken時執行上述操作(這將會發生不止一次)之前,我這樣做 – user3219693

0
Update SomeTable 
Set LongDescription = Stuff(
         (
         Select ' - ' + T1.LongDescription 
         From SomeTable As T1 
         Where T1.rn = SomeTable.rn 
         Order By <add sorting here> 
         For Xml Path(''), type 
         ), 1, 2, '') 
Where SomeTable.PrimaryKeyCol = (
           Select TOP 1 T2.PrimaryKeyCol 
           From SomeTable As T2 
           Where T2.rn = SomeTable.rn 
           Order By T2.LongDescription 
           ) 

是一個解決方案的輪廓。所需要的是選擇正確的更新行的邏輯。在上面的解決方案中,我只需簡單地按字母排序爲每個rn值選擇第一個值。