sqlserver 多行轉一行


sql 例子:

SELECT
STUFF((SELECT
',' + CONVERT(VARCHAR, b.SCsinfoSourceId)
FROM PZDataCsinfo b
WHERE b.DId = a.PFId
FOR XML PATH ('')), 1, 1, '') AS cids,
*
FROM PZFocusImg a WHERE a.PFId=120

注解:

1.STUFF ( character_expression , start , length ,character_expression ) 
參數 
character_expression 
一個字符數據表達式。character_expression 可以是常量、變量,也可以是字符列或二進制數據列。

start 
一個整數值,指定刪除和插入的開始位置。如果 start 或 length 為負,則返回空字符串。如果 start 比第一個 character_expression 長,則返回空字符串。start 可以是 bigint 類型。

length 
一個整數,指定要刪除的字符數。如果 length 比第一個 character_expression 長,則最多刪除到最后一個 character_expression 中的最后一個字符。length 可以是 bigint 類型。

返回類型 
如果 character_expression 是受支持的字符數據類型,則返回字符數據。如果 character_expression 是一個受支持的 binary 數據類型,則返回二進制數據。

2. FOR XML PATH

SELECT
',' + CONVERT(VARCHAR, b.SCsinfoSourceId)
FROM PZDataCsinfo b
WHERE b.DId = 120

SELECT
',' + CONVERT(VARCHAR, b.SCsinfoSourceId)
FROM PZDataCsinfo b
WHERE b.DId = 120
FOR XML PATH ('')

截字符串: SELECT stuff((SELECT
',' + CONVERT(VARCHAR, b.SCsinfoSourceId)
FROM PZDataCsinfo b
WHERE b.DId = 120
FOR XML PATH ('')),1,1,'')  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM