1. 程式人生 > >SQL Server中將多行資料拼接為一個字串

SQL Server中將多行資料拼接為一個字串

--使用 自連線、for xml path('')和stuff合併顯示多行資料到一行中

--注
--1、計算列可以不用包含在聚合函式中而直接顯示,如下面語句的val。
--2、for xml path('') 應該應用於語句的最後面,繼而生成xml。
--3、for xml path('root')中的path引數是生成的xml最頂級節點。
--4、欄位名或是別名將成為xml的子節點,對於沒有列名(欄位+'')或是沒有別名的欄位將直接顯示。如[value] +','則是用,分隔的資料(aa,bb,)。
--5、對於合併多行資料顯示為一行資料時使用自連。

--生成測試表並插入測試資料
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go

--第一種顯示
select id, [val]=(
select [value] +',' from tb as b where b.id = a.id for xml path('')) from tb as a
--第一種顯示結果
--1	aa,bb,
--1	aa,bb,
--2	aaa,bbb,ccc,
--2	aaa,bbb,ccc,
--2	aaa,bbb,ccc,


--第二種顯示
select id, [val]=(
select [value] +',' from tb as b where b.id = a.id for xml path('')) from tb as a
group by id
--第二種顯示結果
--1	aa,bb,
--2	aaa,bbb,ccc,


--第三種顯示
select id, [val]=stuff((
select ','+[value] from tb as b where b.id = a.id for xml path('')),1,1,'') from tb as a
group by id
--第三種顯示結果
--1	aa,bb
--2	aaa,bbb,ccc


--典型應用
--AMD_GiftNew中獲取所有的管理員ID
--select adminIds = stuff((select ','+cast(UserId as varchar) from MM_Users where RoleId = 1 and flag =0 for xml path('')),1,1,'')
--典型應用顯示結果
--3,27

轉載自:http://njm.iteye.com/blog/795881

相關推薦

SQL Server中將資料拼接一個字串

--使用 自連線、for xml path('')和stuff合併顯示多行資料到一行中 --注 --1、計算列可以不用包含在聚合函式中而直接顯示,如下面語句的val。 --2、for xml path('') 應該應用於語句的最後面,繼而生成xml。 --3、for xml path('root')中的pa

SQL Server中將資料拼接一行資料一個字串

SELECT @Users = @Users + ‘,’ + UserName FROM dbo.[User] WHERE RoleID = 1 SELECT @Users 方法二:使用for xml path(”) 和stuff –使用 自連線、f

Sql Server 中將由逗號“,”分割的一個字串轉換一個表集,並應用到 in 條件中

Sql Server 中將由逗號“,”分割的一個字串,轉換為一個表,並應用與 in 條件 select * from tablenmae where id in(1,2,3) 這樣的語句和常用,但是如果in 後面的 1,2,3是變數怎麼辦呢,一般會用字串連

SQL將Oracle中同一列的記錄拼接一個字串

-- 原始資料 -- a 111 -- b 222 -- a 333 -- a 444 -- b 555 -- 最終結果 -- a 111*333*444 SELECT L4.L_TIME ,MAX(SUBSTR(L4.分組內容,2)) 最終欄位

利用EXCEL將資料轉換SQL語句【新增、刪除、修改同理】

語句如下: 按照下列標識進行替換,該語句可以快速生成對應資料的SQL插入語句,批量刪除,批量修改同理! =CONCATENATE("INSERT INTO 【表名】(【欄位名A】,【欄位名B】) V

SQL Server 2008 資料集增加度量值計算平均值

環境:SQL Server 2008 + Microsoft Visual Studio 其他步驟就不說了,直接到多維資料集這裡。比如說你已經有了一個總消費的度量值Amount和一個計數度量值count。現在要求平均值,步驟如下: 1 開啟計算標籤頁 2.在這個計算頁

SQL Server 2005中的資料匯出Excel

1、開啟SQL Server Management Studio,然後找到相應的資料庫 2、右鍵點選資料庫名稱,然後點選“任務-->匯出資料” 3、彈出匯入和匯出嚮導頁面後,點選【下一步】按鈕,進入“選擇資料來源”介面。“資料來源”和“伺服器名稱”採用預設值,“身份

MSSQL將資料拼接成一列

select e_uid, base_no = (stuff((select ';' + base_no from e_baseuid where e_uid = a.e_uid for xml path('')),1,1,'')), e_usetype = (stuff((

資料庫將資料合併一行資料

先看資料庫: 假如我們執行這樣的語句 select * from sh_meetingservice where id in(1,2,3);結果如下會有多行 但是我們想要多行合併為一行,我們需要用到 for xml path select text+',' fr

sql裡將重複資料合併一行,資料用逗號分隔(張高偉)

一.定義表變數 DECLARE @T1 table ( UserID int ,  UserName nvarchar(50), CityName nvarchar(50) ); insert into @T1 (UserID,UserName,CityName) values (1,'a','上海') i

mysql查詢某一欄位,並將結果拼接一個字串

select GROUP_CONCAT(uid) from users使用GROUP_CONCAT()函式,預設以‘,’將拼接的字串隔開,得到類似以下形式的字串:“1,2,3,4,5,6,”使用DIST

將陣列中的元素拼接一個字串

join()方法 利用JS陣列的join()方法即可完成將元素拼接為一個字串。 arrayObject.join(separator); 備註:join()方法不給定分隔符的時候,預設以英文逗號作

DB2將一列資料拼接一個字串(轉自百度知道)

有表XWCMDOCTAG通過SELECT TAGNAME FROM XWCMDOCTAG where DOCID = 1 and TAGGINGNUM > 0語句查出如下結果集 TAGNAME 中國 美國 英國 韓國 請問怎麼把這一列的值

SQL 兩列欄位,合併一個字串,中間加符號

數值型:select cast(a as varchar(10))+'--'+cast(b as varchar(10)) from tablename字元型:select a+'--'+b from tablename--------------------------

SQLSqlserver中如何將一列資料拼接一個字串

建立表值函式:create function [dbo].[GetAssessmentCity]( @ryear varchar(4), --年份 @rmonth varchar(2) --月份 ) returns @GetCity TABLE(id varchar(20

SQL 將一條記錄中個字段的值拼接一個字段 && 將數據合並成一行,並且拼接CONVERT() 、for xml path的使用

varchar start 技術分享 現在 date rom 結果 技術 ont 接著上篇文章的訂單表(商品編號,價格設置時間id(類似於創建時間,創建時間約早,則act_id越小) ,價格的時間段,商品價格) 一、將一條記錄中多個字段的值拼接為一個字段 現要求將兩個時間

關於SQL Server將一列的內容拼接成一行的問題討論

示例 昨天遇到一個SQL Server的問題:需要寫一個儲存過程來處理幾個表中的資料,最後問題出在我想將一個表的一個列的多行內容拼接成一行,比如表中有兩列資料 : 類別 名稱 AAA 企業1

SQL Server將一列的內容拼接成一行或一個字串的問題

昨天遇到一個SQL Server的問題:需要寫一個儲存過程來處理幾個表中的資料,最後問題出在我想將一個表的一個列的多行內容拼接成一行 比如表中有兩列資料 : ep_classes  ep_name AAA         企業1 AAA         企業2

SqlServer和Oracle從記錄(資料集)中查詢結果並拼接一個字串SQL語句(縱表資料轉成拼接的文字)

使用情景: 例如:需要從學生成績表中,查詢分數大於95分的所有學生編號,用逗號分隔成一個字串。 準備測試資料: create table score (id int,score int) insert into score values(1,90) insert into

關於SQL Server將一列的內容拼接成一行

示例 需要寫一個儲存過程來處理幾個表中的資料,最後問題出在我想將一個表的一個列的多行內容拼接成一行,比如表中有兩列資料 : 類別 名稱 AAA 企業1 AAA 企業2 AAA 企業3 BBB 企業4 BBB 企業5 我想把這個表變成如下格式: