sqlServer聚合拼接一列字符串

1.前言: 

最近做項目的時候遇到一個需求,查詢一個時段選課的人數,還有學生的姓名。前端展示姓名是一個字符串,多個學生用,分開。因爲是個實習生所以並不懂,於是去學習了一波。

2.環境

SqlServer + boot-data-jpa 

3.SqlServer的STUFF函數。

STUFF(character_expression, start, length, character_expression) 

  • character_expression :一個字符數據表達式。可以是常量、變量,也可以是字符列或二進制數據列。
  • start : 指定刪除的位置。
  • length : 指定刪除的長度

示例:

SELECT
	STUFF(
		(
			SELECT
				',' + bookDate
			FROM
				T_HK_RESERVE_TUTOR_TIME FOR XML PATH ('')
		),
		1,
		1,
		''
	)

for xml path ('')指定爲 xml格式。

4.配合聚合函數grout By 使用

SELECT
	COUNT (1) AS num,
	r.teacherId as teacherId,
	r.bookDate as bookDate,
	r.timePeriodId AS timePeriodId,
	STUFF(
		(
		SELECT ',' + s.realname from T_HK_RESERVE_TUTOR_TIME AS re INNER JOIN T_HK_STUDENT AS s on re.username = s .username
		WHERE re.teacherId = r.teacherId 
		AND re.bookDate = r.bookDate 
		AND re.timePeriodId = r.timePeriodId
		FOR XML PATH('')
		)
		, 1, 1, '') AS names
	
FROM
	T_HK_RESERVE_TUTOR_TIME AS r
GROUP BY
	r.teacherId,
	r.bookDate,
	r.timePeriodId

在stuff子查詢中用where帥選分組條件

結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章