SQL中將查詢的結果集整合成一條資訊

2022-03-26 03:27:54 字數 1831 閱讀 3764

有時候

需要將在資料庫中查詢的結果集

(顯示為不同列)

中每一列的資料整合成一條用某一符號(例如「;」)相連的一條資料,如下:

轉換為資料:

在程式中控制比較簡單,可以查出datatable,然後迴圈獲取。本文介紹在sql儲存過程中直接得出結果。

**如下:

label開始

declare

@docid

varchar(50

)

select

@docid

=docid from information where infoid=

@fid

declare

@tabel

table

( label

varchar(50

) )

insert

into

@tabel

select ll.label from infolabel as

il

left

join label as ll on il.labelid =

ll.labelid

where il.docid =

@docid

declare

@labels

varchar(200

)

declare

@label

varchar(50

)

set@labels=''

--刪除空和null的資料

delete

from

@tabel

where label is

null

or label =

''while(exists(select

top1

1from

@tabel

))

begin

select

top1

@label

= label from

@tabel

set@labels

=@labels

+@label+'

;'delete

from

@tabel

where label =

@label

endif(@labels

<>

''and

@labels

isnot

null

)

begin

set@labels

=substring(@labels,0,len(@labels

))

end--

-label結束

大體流程:

1.獲取結果集;

2.建立臨時表:

declare

@tabel

table

( label

varchar(50

) )

3.往臨時表裡插入查到的結果集;

4.刪除臨時表中為空的列;

5.用while迴圈 每迴圈一條將查詢的資料加上間隔符號「;」插入到變數@labels 中;

6.每一次迴圈最後刪除剛剛迴圈的這條資料,一邊進入下一條資料,防止重複;

7.如果變數@labels 不為空不為null,用substring函式擷取,去掉最後乙個「;」。

sqlserver中將查詢結果拼接成字串

for xml path param 將查詢結果以xml格式輸出 select id,name from table1 for xml path path後面沒有引數時,每行資料被預設標籤包裹,每行列資料被被其列名標籤包裹。結果如下 1 holab 2name1 每行資料最外面包裹的標籤由path的...

sql查詢結果集匯出Excel

t sql exec master.xp cmdshell bcp 庫名.dbo.表名out c temp.xls c q s servername u sa p 引數 s 是sql伺服器名 u是使用者 p是密碼 說明 還可以匯出文字檔案等多種格式 declare str varchar 600 s...

mysql查詢結果翻轉 如何把sql結果集翻轉

我用的是sql 請教如何把sql結果集翻轉?如下一張表 checkinout 顯示員工簽到,簽退的考勤表,checktype 考勤型別 i 表示簽到,o 表示簽退 timeflag 4表示上午,5表示下午 checktime 簽到,籤 userid checktype checktime timef...