亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

此查詢如何創建逗號分隔列表SQL Server?

此查詢如何創建逗號分隔列表SQL Server?

千巷貓影 2019-07-08 12:49:29
此查詢如何創建逗號分隔列表SQL Server?我在Google的幫助下編寫了這個查詢,以便從一個表中創建一個分隔列表,但是我沒有理解這個查詢中的任何內容。有人能解釋一下發生了什么嗎 SELECT      E1.deptno,      allemp = Replace ((SELECT E2.ename AS 'data()'                         FROM emp AS e2                         WHERE e1.deptno = e2.DEPTNO                         FOR xml PATH('')), ' ', ', ')   FROM EMP AS e1   GROUP BY DEPTNO;給我結果10  CLARK, KING, MILLER20  SMITH, JONES, SCOTT, ADAMS, FORD30  ALLEN, WARD, MARTIN, BLAKE, TURNER, JAMES
查看完整描述

3 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

一步地把它拆開-由內而外。

步驟1:

運行最內部的查詢,看看它會產生什么:

SELECT E2.ename AS 'data()' FROM emp AS e2 
WHERE e2.DEPTNO = 10FOR XML PATH('')

您應該得到一個輸出,類似于:

CLARK KING MILLER

步驟2:

這個REPLACE只是用,-從而將你的產出轉化為

CLARK, KING, MILLER

步驟3:

外部查詢獲取deptno值-加上內部查詢的結果-并生成最終結果。


查看完整回答
反對 回復 2019-07-08
?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

SQLServer 2017使用新的STRING_AGG..最近我發現了這篇文章并把我的資料/用于XML使用新字符串函數的策略。還避免了額外的JOIN/SUBQUERY和for XML的開銷(以及奇數編碼問題),很難解釋SQL。

SELECT  E1.deptno, 
        STRING_AGG(E1.ename, ', ') AS allempFROM    EMP AS e1 
GROUP BY DEPTNO;

*也要確保看看對方STRING_SPLIT使使用SQL分隔的數據更加容易。


查看完整回答
反對 回復 2019-07-08
  • 3 回答
  • 0 關注
  • 640 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號