有時候
需要將在資料庫中查詢的結果集
(顯示為不同列)
中每一列的資料整合成一條用某一符號(例如「;」)相連的一條資料,如下:
轉換為資料:
在程式中控制比較簡單,可以查出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.建立臨時表:
declare3.往臨時表裡插入查到的結果集;@tabel
table
( label
varchar(50
) )
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...