sql 兩筆合成一筆
-
2012年4月9日 上午 08:54
5008 Y5 2531436 A0619 FHFD2 4 F 8888885 B 43.95 10 0 09571731
5008 Y5 2531436 A0619 FHFD2 4 F 8888885 S 44.2 5 0 09571731以上兩筆 只有 買賣別 B S 不同 怎麼 合成一筆
所有回覆
-
2012年4月9日 上午 08:59
- 已提議為解答 ChenBruceMicrosoft Contingent Staff, Moderator 2012年4月9日 上午 09:09
- 已標示為解答 ricoismeMVP, Moderator 2012年4月11日 上午 02:20
-
2012年4月9日 下午 12:01
5008 Y5 2531436 A0619 FHFD2 4 F 8888885 B 43.95 10 0 09571731
5008 Y5 2531436 A0619 FHFD2 4 F 8888885 S 44.2 5 0 09571731以上兩筆 只有 買賣別 B S 不同 怎麼 合成一筆
也是就能變成
5008 Y5 2531436 A0619 FHFD2 4 F 8888885 B 43.95 S 44.2 09571731
有底線的部份變成在同一列
-
2012年4月9日 下午 02:54
5008 Y5 2531436 A0619 FHFD2 4 F 8888885 B 43.95 10 0 09571731
5008 Y5 2531436 A0619 FHFD2 4 F 8888885 S 44.2 5 0 09571731以上兩筆 只有 買賣別 B S 不同 怎麼 合成一筆
也是就能變成
5008 Y5 2531436 A0619 FHFD2 4 F 8888885 B 43.95 S 44.2 09571731
有底線的部份變成在同一列
有辦法辦到嘛?! 我查了資料 好像沒這樣的case
-
2012年4月9日 下午 04:24版主
5008 Y5 2531436 A0619 FHFD2 4 F 8888885 B 43.95 10 0 09571731
5008 Y5 2531436 A0619 FHFD2 4 F 8888885 S 44.2 5 0 09571731以上兩筆 只有 買賣別 B S 不同 怎麼 合成一筆
也是就能變成
5008 Y5 2531436 A0619 FHFD2 4 F 8888885 B 43.95 S 44.2 09571731
有底線的部份變成在同一列
有辦法辦到嘛?! 我查了資料 好像沒這樣的case
有嘗試過亂馬客提供的方法嗎? 文章兩種方法都可以達到你要的結果喔
保證解答-微軟技術支援服務
-
2012年4月10日 上午 12:00
建立temp table將你要顯示的東西 依照你的需求insert 進去就OK嚕
-
2012年4月10日 上午 01:55
SELECT ColA , STUFF -- 說明 3 ( ( SELECT ',' + ColB + SPACE(1) + CAST(ColC AS varchar(10)) -- 說明 2 FROM @Temp AS T2 WHERE T1.ColA = T2.ColA FOR XML PATH('') -- 說明 1 ) ,1,1,'' ) AS Data FROM @Temp T1 GROUP BY ColA說明
- 依預設,PATH 模式會針對結果集的每個資料列產生 <row> 元素包裝函數。 您可以選擇性地指定元素名稱。 如果您有選擇,則會將指定名稱做為包裝函數的元素名稱。 如果您提供空白字串 (FOR XML PATH ('')),就不會產生包裝函數元素。
- 不要給欄位名稱,任何沒有名稱的資料行都將予以內嵌。
- 利用 STUFF() 來取代第一個逗號
-
2012年4月10日 上午 02:40
有真的看了亂馬客大提供的方法嗎?
請注意一下T-SQL使用,
像是做法1 ,你要達到希望的結果,
第一個就是調整 SELECT @str 的部分,利用COALESCE串接 欲合併顯示欄位結果樣貌 ,
例如 B , 43.95 兩個欄位一個是代表A1 一個是A2,那就是COALESCE(@str + ', ', '') + A1+ ' ' + A2 FROM @T1;
然後在Select DISTINCT 的時候把會其他相同資訊的欄位列出來,再加上剛做出來的 @str就可以達到你要的結果了,
做法2也是同樣道理。
-
2012年4月10日 上午 05:41
或者是你也可以參考這篇文章來修改成符合你的需求。
http://www.dotblogs.com.tw/terrychuang/archive/2011/04/16/22867.aspx
以上說明若有錯誤請指教,謝謝。
http://www.dotblogs.com.tw/terrychuang/

