午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

SQL Server中多行多列連接成為單行單列

瀏覽:94日期:2023-11-06 09:17:33

原始結構:

Column1 Column2

----------- ----------

1 A

1 B

2 C

2 D

2 E

3 F

查詢效果:

Column1 Column2

----------- ------------------

1 A,B

2 C,D,E

3 F

即將 Column1 相同的行的 Column2 連成一列。

不知如何描述此種用法,是否具有像交叉表相關的 Cross-Table 和 Pivot 之類的約定成熟的專業稱謂?

是否也可以稱為另一種 Cross-Table ?

此需求應該是常見的,網上也有許多DEMO,只是 CSDN 中頻繁有新手提問,現簡單實現一個DEMO,以便參考。

-- 多行多列連接成為單行單列示例:需要一個自定義函數

-- http://community.csdn.net/Expert/TopicView3.asp?id=5603231

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[VertToHorzSample]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[VertToHorzSample]

GO

-- 建立測試數據

CREATE TABLE VertToHorzSample(

Column1 int,

Column2 varchar(100)

)

GO

INSERT INTO VertToHorzSample(Column1, Column2)

SELECT 1, 'A'

UNION ALL

SELECT 1, 'B'

UNION ALL

SELECT 2, 'C'

UNION ALL

SELECT 2, 'D'

UNION ALL

SELECT 2, 'E'

UNION ALL

SELECT 3, 'F'

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ConvertVertToHorz]') and xtype in (N'FN', N'IF', N'TF'))

drop function [dbo].[ConvertVertToHorz]

GO

-- 建立輔助函數

CREATE FUNCTION ConvertVertToHorz(@Col1Val int)

RETURNS VARCHAR(8000)

AS

BEGIN

-- 實際項目中,應該考慮 @RetVal 是否會超過 8000 個字符

DECLARE @RetVal varchar(8000)

SET @RetVal = ''

-- 通過遞歸 SELECT 連接指定列存儲到臨時變量中

SELECT @RetVal = Column2 + ',' + @RetVal FROM VertToHorzSample WHERE Column1 = @Col1Val

-- 連接多列

-- SELECT @RetVal = Column2 + ',' + Column3 + ',' + Column4 + ',' + @RetVal FROM VertToHorzSample WHERE Column1 = @Col1Val

-- 去掉尾巴的 , (逗號)

IF LEN(@RetVal) > 0

SET @RetVal = LEFT(@RetVal, LEN(@RetVal) - 1)

--PRINT @RetVal

RETURN @RetVal

END

GO

-- 測試

SELECT Column1, dbo.ConvertVertToHorz(Column1) Column2 FROM (SELECT DISTINCT Column1 FROM VertToHorzSample) t

/**//*

Column1 Column2

----------- ------------------

1 A,B

2 C,D,E

3 F

*/

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[VertToHorzView]') and OBJECTPROPERTY(id, N'IsView') = 1)

drop view [dbo].[VertToHorzView]

GO

-- 可以建立一個視圖

CREATE VIEW dbo.VertToHorzView

AS

SELECT Column1, dbo.ConvertVertToHorz(Column1) Column2

FROM (SELECT DISTINCT Column1 FROM dbo.VertToHorzSample) t

GO

-- 測試視圖

SELECT * FROM VertToHorzView

/**//*

Column1 Column2s

----------- -----------------

1 A,B

2 C,D,E

3 F

*/

標簽: Sql Server 數據庫
主站蜘蛛池模板: 欧美激情性做爰免费视频 | 久久国产精品久久精品国产 | 福利一区二区视频 | 国产在线观看第一页 | 手机在线精品视频 | 久久噜噜色综合一区二区 | 91在线成人 | 成人午夜免费福利 | av色哟哟 | 婷婷香蕉| 国产乱人乱偷精品视频a人人澡 | 99免费在线 | 亚洲精品成人 | 亚洲激情在线播放 | 免费在线观看亚洲 | 日韩美女在线 | 免费日韩视频 | 五月激情丁香 | 成人一区二区三区视频 | 国产视频一区在线播放 | 99自拍视频在线观看 | 在线观看毛片网站 | 久久久www成人免费毛片 | 黄色网址av | 国产精品久久久久久网站 | 国产精品第| 成年人香蕉视频 | 天天天天天天干 | 99精品一区二区三区 | 一级黄色大全 | 欧美精品综合 | 懂色av蜜臀av粉嫩av永久 | 精品999久久久 | 亚洲一区久久久 | 亚洲小视频在线观看 | 国产午夜精品在线观看 | 琪琪久久| 久草福利在线观看 | 国产伦精品一区二区三区视频网站 | 鲁大师在线高清在线播放免费观看 | 国产亚洲精品成人 |